4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C# .csproj に 外部DLL 追加

Last updated at Posted at 2021-03-11

#はじめに
Visual Studio の Express が 2017 で終わりってことで Visual Studio Code へ移行
C++はQtと組み合わせて なんとなく移行できたことにした
しかし 配布されたSDKが.NETで組まれていたため Qt で組むより .NET でそのまま組んだ方が楽じゃないかなと思い立つ
その思いが甘かった
C++/CLI の特殊な書き方が全く頭に入らずラムダ式より拒否感が強い
この際だから C# を覚えてみようと路線変更するも 外部DLLの追加方法が分からない!
検索すると Visual Studio のIDEを使った追加方法はあるが 直接 .csproj に追加する方法が見つからない!
余りにも簡単すぎて 記事にする必要もないのかもしれないが Qiita にはいつもお世話になりまくっているので 覚書として

#1.プロジェクトを作成
次のコマンドでWindows Form用アプリのプロジェクト(Sample.scproj)を作成

> mkdir Sample
> cd Sample
> dotnet new winforms

#2. Sample.csprojを編集
配布されたSDKがMSILではなかったので プラットフォームを指定する必要あるらしい

Sample.csproj
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <Platform>x64</Platform> <!-- SDKに合わせ Platformを追加 -->
  </PropertyGroup>

  <!-- このItemGroupも追加 -->
  <ItemGroup>
    <Reference Include="Foo.Bar.Baz">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>lib\x64\Foo.Bar.Baz.dll</HintPath>
    </Reference>
  </ItemGroup>

</Project>

これで Foo.Bar.Baz のクラスが使用できるようになる
HintPath はプロジェクト下にDLLがあれば記述は不要かも

#3. パッケージの参照
IDEを使っている分には余り意識しなくてもよさげだが dotnet new で生成したプロジェクトだとパッケージ参照エラーになる
SqlClientパッケージを追加した場合は次のコマンドを実行

> dotnet add package System.Data.SqlClient

次の様にプロジェクトファイルにパッケージの参照情報が追記される

Sample.csproj
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <Platform>x64</Platform>
  </PropertyGroup>

  <ItemGroup>
    <Reference Include="Foo.Bar.Baz">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>lib\x64\Foo.Bar.Baz.dll</HintPath>
    </Reference>
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
  </ItemGroup>

</Project>

#おわりに
前述した通り ご存知の方には それが何?でしょうが 誰かのためになれば幸いです

4
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?