1

同じソリューション内の別のプロジェクトから Visual Studio ソリューション内の 1 つのプロジェクトを参照しています。参照されているプロジェクト (プロジェクト B) には Microsoft.Owin.Host.HttpListener nuget パッケージがあるため、.dll が参照されています。プロジェクト B (プロジェクト A) を参照しているプロジェクトがビルドされています。出力フォルダーは、Microsoft.Owin.Host.HttpListener.dll を除いて、プロジェクト B で参照されているすべての dll を取得しますが、それは Copy Local - true としてマークされています。

Microsoft.Owin.Host.HttpListener.dll は、これまでに直面した唯一のものであり、設定に関係なく、MSBuild の _CopyFilesMarkedCopyLocal ステップの一部としてプロジェクト A のビルド出力にコピーされることを拒否しています。

app.config のエントリに追加しようとしましたが、役に立ちませんでした。

参照の問題を示すサンプル プロジェクトを整理し、こちらの GitHub にアップロードしました。

設定で自由に遊べます。

これを尋ねる前に、Stackoverflow で関連する質問を確認しましたが、回答がないか、無関係です。

.HttpListener.dll を他の .dll と一緒に参照プロジェクト出力にコピーする方法を教えてください。

4

1 に答える 1

5

チームメンバーの助けを借りて、問題の根本にたどり着くことができました。プロジェクト A または B のコードで明示的に使用されていないため、コンパイラは HttpListener dll を省略していました。したがって、プロジェクト B のコードに次の行を追加しました。

//Dummy line to bypass the optimization.
Trace.TraceInformation(typeof(Microsoft.Owin.Host.HttpListener.OwinHttpListener).FullName);

これにより、HttpListener.dll への実際の依存関係が作成され、プロジェクト A の出力に含まれるようになりました。

于 2016-03-09T13:50:47.630 に答える