0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Visual Studio】Negetを使用して参照しているdllに対し、ローカルにコピーをfalseにする方法

Last updated at Posted at 2025-02-03

概要

Visual Studioでとあるプロジェクトをビルドした際に、Negetを使用して参照しているdllについて「bin」フォルダにコピーされないように設定したかったのですが、意外?と情報が少なかったので備忘録として残します。
※Visual Studio2019を使用しています。

やりたいこと

基本的に概要の通りです。
Visual Studioのソリューションエクスプローラーからプロジェクトの「参照」のプルダウンを押下すると、参照しているdllが表示されると思います。
この時、通常はdll名の左部に以下のようなアイコンがあり、この場合はdll名を右クリックしてプロパティからローカルにコピーを「false」に設定することができると思います。

ただし、恐らくNugetから参照したdllは以下のようなアイコンになり、このアイコンのdllは右クリックからのプロパティでも「ローカルにコピー」という項目がありませんでした。

なのでそのプロジェクトをビルドすると、binフォルダにはNugetで参照しているdllが格納されていました。そのdllについて、ビルド時にbinフォルダにコピーしないようにする、という方法です。

方法

① Nugetを使用した参照を行っている該当のプロジェクトファイル (拡張子が.csproj) をテキストエディタ等で開きます。
② テキストエディタの検索機能からNugetで取得したdll名で検索すると、下記のようにPackageReference要素のInclude属性の値で引っかかるかと思います。

    <PackageReference Include="Nugetで取得したdll名">
      <Version>x.x.x</Version>
    </PackageReference>

③ ここのPackageReference要素の子要素に、<ExcludeAssets>runtime</ExcludeAssets>という定義を追加します。

    <PackageReference Include="Nugetで取得したdll名">
      <Version>x.x.x</Version>
      <ExcludeAssets>runtime</ExcludeAssets>
    </PackageReference>

これで恐らく、ローカルにコピーを「false」にした時と似たような挙動になると思います。

  • ExcludeAssets要素はコンテンツに定義した値をもとに、その条件でNuGetパッケージの特定のアセット (資産) を除外できる設定らしいです。
  • 詳しいことはわからないのですが、こちらのWebページで以下のようなことが記載されていました。

PackageReference で ExcludeAssets="runtime" を設定することは、参照で CopyLocal を false に設定することと似ています。DLLごとではありませんが、基本的に同じことを行います。また、私が知る限り、UIには公開されていません-プロジェクトファイルを編集する必要があります。

参考:

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?