問題タブ [copy-local]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio-2008 - Visual Studio 2008: 異なる PC での CopyLocal の既定値
私は現在、数年間取り組んできたこの仕事でジュニア エンジニアをトレーニングしています。これは Visual Studio の C# であり、その下に複数のプロジェクトを持つ 1 つのソリューションがあります。
プロジェクトの 1 つがアプリケーションを生成し、PC でそのプロジェクトをデバッグすると正常に動作します。一方、彼が同じことをすると、参照が想定されているファイルを見つけられないため、例外が発生します。
これは、前述の参照の CopyLocal が私の PC では True で、彼の PC では False であるためであることが確認されました。SVN を使用してすべてのファイルが同じであることを確認しているため、Visual Studio の設定でこれを修正する方法があると思います (そして、両方の .csproj ファイルの関連するノードが実際に同じであることを確認しました)。
あちこち見ましたが、彼の設定を修正する方法が見つかりません。誰か助けてくれませんか?
どうもありがとう、良い一日を!
visual-studio - コンテンツ ファイルを nuget パッケージで "copy local : always" に設定する
ビルド後のイベントでこのコマンドを使用して、プロジェクトから nuget パッケージを生成します。変数%conf%
は正しい構成 (デバッグまたはリリース) に設定され%1
、プロジェクト名 (例: "MyCompany.MyProject") です。
このパッケージは、私たち自身の使用のみを目的としており、nuget で公開されることはありません。それは私たちのプライベートリポジトリで終わります。
プロジェクトには、 と に設定されているファイルがありgenerate action : content
ますcopy local : always
。(私の Visual Studio はフランス語なので、翻訳が 100% 確実ではありません)。名前を付けましょうimportantfile.xml
。
生成されたパッケージでは、次の構造になります。
importantfile.xml
これは問題ありません。このファイルは重要なので、パッケージにデプロイしたいのです。
パッケージを別のプロジェクトにインストールするimportantfile.xml
と、プロジェクトのルートにデプロイされます。それで大丈夫です。しかし、それは設定されていませんcopy local : always
。
パッケージをインストールするこのプロジェクトに参加する必要importantfile.xml
があります。copy local : always
どうすればそれを達成できますか?
ノート :
パッケージをインストールした直後にファイルを設定できcopy local : always
ますが、それは大したことではありません。パッケージの後の更新でこのプロパティがそのままになるのであれば、私はそれを受け入れますが、そうではありません。パッケージを更新すると、 (ここに記載されているように)copy local
にリセットされます。never
プロジェクトのフォルダーに nuspec ファイルがあります。
c# - ローカルコピー = false ファイルが見つからないという例外の問題
こんにちは、私はこれが尋ねられたことを知っていますが、答えが得られませんでした. C:\Program files (x86)\Dummu_API.dll にインストールされている dll を使用したいときに問題が発生します
アプリを実行すると、例外がスローされます。
ファイルまたはアセンブリ 'Dummy_API、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
私のプロジェクトには、Copy Local = false および特定のバージョン = false としての参照があります。私のプロジェクトも x86 プラットフォーム ターゲットです。
アプリがアセンブリを見つけられない理由がわかりません。何が起こっているのですか?
c# - 「copylocal=false」への参照を設定すると、「System.IO.FileNotFoundException: ファイルまたはアセンブリを読み込めませんでした」というメッセージが表示されるのはなぜですか?
状況は次のとおりです。「TestProject」と呼ぶテスト プロジェクトを使用して単体テストを実行しようとしています。「Class1」および「Project1」と呼ぶ別のプロジェクトのクラスをテストしています。
Project1 は、実行時にさまざまな dll の動的遅延読み込みを行います。これを「TheDynamicDLLs」と呼びます。Project1 は、独自のビルド出力パスに関連するディレクトリを調べることで、これらの dll を見つけます。
問題の最初の部分は、TestProject が Project1 を参照するときに発生します。明らかに、新しくビルドされた Project1.dll を独自のビルド ディレクトリにコピーします。次に、Project1.dll がその場所からの相対パスで TheDynamicDLLs を検索すると、それらを見つけることができません。自分の。
これを修正するために、TestProject の参照に移動し、Project1 参照を右クリックして、そのプロパティを開きました。次に、「ローカルにコピー」を「False」に設定します。また、参照の "Path" プロパティが Project1 のビルド パスと同じであることも確認しました。
今、私は新しい問題を抱えており、それが何であるかさえ理解できません。単体テストを実行するたびに、「System.IO.FileNotFoundException: ファイルまたはアセンブリを読み込めませんでした [Project1 が見つからないアセンブリであるという情報]」というレポートで失敗します。
さらに、単体テストを実行するだけでなく、デバッグしようとすると、例外がスローされたり、文句が出たりすることがないため、問題に関する詳細情報を見つけることができません。テストレポートにも、これ以上役立つ情報はありません。
以下は、機密保持のために名前などを差し替えた完全なテスト レポートです。
ログから、ローカルにコピーしないように明示的に指示したにもかかわらず、TestProject はまだ Project1 の dll を独自の #$%^ing ビルド パスからロードしようとしているようです。(ぐう…)
私は何を間違っていますか?
.net - MSBuild ProjectReference:private ("Copy Local") - 許可される値と動作は何ですか?
TL;DR<private>
/ "Copy Local" オプションが MSBuild でどのように機能するかを詳しく説明している公式ドキュメントはありますか? そして、それに入る値は何ですか?
Visual Studio のあるプロジェクトから別のプロジェクトへのプロジェクト参照を追加<ProjectReference Include=".....csproj">
すると、.csproj
MSBuild ファイルに が追加されます。
Visual Studio の 1 つのプロジェクトからファイル システムのアセンブリ ファイルにファイル参照を追加<Reference Include="Foo"> <HintPath>....Foo.dll</HintPath> ...
すると、.csproj
MSBuild ファイルに が追加されます。
どちらの場合も、Visual Studio SettingCopy Local = True|False
のサブ要素<Private>True</Private>
or<Private>False</Private>
が追加されます。
Reference
Common MSBuild Project ItemsProjectReference
の下に文書化されているようです:
あなたはそれに気付くでしょう、
ProjectReference
<private>
アイテムをまったく文書化していませんReference
True
またはFalse
可能な値としてリストされていません。
そう。は?<private>
このオプションがどのように機能するかを詳細に説明している公式ドキュメントはありますか (良いブログ エントリがあれば幸いです) 。ドキュメントは完全に間違っているのでしょうか、それとももっと何かありますか?
ここに私のVS 2013 Expressからのスニペットの例:
.net - プロジェクトが参照するプロジェクトからのすべての参照があることを保証するにはどうすればよいですか?
多くのクラス ライブラリ プロジェクトを含むソリューションを検討してください。それぞれに多数の NuGet パッケージがインストールされており、これらのプロジェクトごとに 1 つの単体テスト プロジェクトがあります。クラス ライブラリ プロジェクトの参照が に構成されていることを念頭に置いてCopy Local = false
、単体テスト プロジェクトに少なくとも元のプロジェクトからのすべての参照が常に含まれていることを確認するにはどうすればよいですか?
私たちはすでに何度かこの問題に悩まされてきました。どこからともなく、dll が見つからないためにナイトリー ビルドが失敗します。何が起こったのかを確認すると、通常、誰かが新しいパッケージまたは参照をプロジェクトに追加しましたが、単体テスト プロジェクトに同じ参照をインストールしていませんでした。開発マシンでは、各プロジェクトがその出力を別のフォルダーにコピーするため、この問題は顕在化しない傾向があります。ただし、TFS でビルドする場合、MSBuild はオーバーライドされ、すべての出力が同じフォルダーに配置されます。
Copy Local = false
直接実行する必要のないすべてのものに戦略を使用しています (つまり、テスト プロジェクトと Web アプリケーションのみがローカルのすべての参照をコピーするように構成されています)。これは、不要な dll のコピーを回避し、ビルド プロセスを高速化するために行われました。を使用するCopy Local = false
と、参照先のプロジェクトから自動的にコピーされないため、すべての参照を各プロジェクトに明示的に追加する必要があります。単体テスト プロジェクトの場合、これは通常packages.config
、テスト プロジェクト内のファイルに、元のプロジェクトのすべてのパッケージに加えて、モック フレームワークなどのテスト固有の dll が含まれていることを意味します。
個人的には、すべての参照を明示的に指定する必要があることを好みます。これにより、誰かが何が起こっているのか、何が何に依存しているかをより明確に確認できるようになるからです。過去にもデフォルトで問題があったCopy Local = true
ので、元に戻すのはあまり好きではありません。しかし、時折、誰かが必要な参照を追加していないことに関連する問題に出くわすことがあります。
特定のプロジェクトの依存プロジェクトからのすべての参照を持たないようにすることができないように、何らかの方法でこれを強制できますか? 理想的には、それがコンパイル エラーであることを望みますが、どのような種類の強制も有益です。ソリューション内のすべてのプロジェクトが互いに参照するときに NuGet パッケージのように動作する場合は非常にクールです。オリジナルパッケージ。
c# - C# をコピーせずに dll を参照する
新しい C# プロジェクトを作成して dll を参照すると、プロジェクトのコンパイル時に dll がプロジェクトの出力ディレクトリにコピーされます。
dll ファイルを参照し、それらをプロジェクトの出力ディレクトリにコピーせず、実行時に実行可能ファイルを動作させる方法はありますか (Assemblies
私が間違っていない場合のようなものです)。
参照 dll のプロパティにアクセスして、 を変更しCopy Local
ましたFalse
が、役に立ちませんでした (おそらく、その dll が dll のディレクトリにある他の dll に依存しているためです)。
それを行う方法はありますか?