私のVisual Studioソリューションには4つのプロジェクトがあります(誰もが.NET 3.5を対象としています)-私の問題では、これら2つだけが重要です。
- MyBaseProject <-このクラスライブラリはサードパーティのDLLファイル(elmah.dll)を参照します
- MyWebProject1 <-このWebアプリケーションプロジェクトにはMyBaseProjectへの参照があります
私はへelmah.dll参照を追加MyBaseProjectをクリックして、Visual Studio 2008で「参照の追加...」→「参照」タブ→「elmah.dll」を選択します。
Elmahリファレンスのプロパティは次のとおりです。
- エイリアス-グローバル
- ローカルにコピー-true
- 文化 -
- 説明-ASP.NETのエラーログモジュールとハンドラー(ELMAH)
- ファイルタイプ-アセンブリ
- パス-D:\ webs \ otherfolder \ _myPath \ __ tools \ elmah \ Elmah.dll
- 解決済み-真
- ランタイムバージョン-v2.0.50727
- 指定されたバージョン-false
- 厳密な名前-false
- バージョン-1.0.11211.0
でMyWebProject1私はによるプロジェクトMyBaseProjectへの参照を追加しました:「MyBaseProject」を選択→「プロジェクト」タブ→「参照の追加します...」。この参照のプロパティは、次のメンバーを除いて同じです。
- 説明-
- パス-D:\ webs \ CMS \ MyBaseProject \ bin \ Debug \ MyBaseProject.dll
- バージョン-1.0.0.0
Visual Studioでビルドを実行すると、elmah.dllファイルがMyBaseProject.dllと共にMyWebProject1のbinディレクトリにコピーされます。
ただし、ソリューションのMSBuildをクリーンアップして実行した場合(D:\ webs \ CMS> C:\ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ MSBuild.exe / t:ReBuild / p:Configuration = Debug MyProject.sln )elmah.dllが MyWebProject1のbinディレクトリにありません-ビルド自体には警告やエラーは含まれていません!
MyBaseProjectの.csprojに、値が「true」のプライベート要素が含まれていることを確認しました(Visual Studioでは「ローカルのコピー」のエイリアスにする必要があります)。
<Reference Include="Elmah, Version=1.0.11211.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\mypath\__tools\elmah\Elmah.dll</HintPath>
**<Private>true</Private>**
</Reference>
(プライベートタグは、デフォルトでは.csprojのxmlに表示されませんでしたが、Visual Studioは「ローカルのコピー」をtrueと言っていました。「ローカルのコピー」をfalseに切り替えて保存しました-保存し、もう一度trueに設定して保存します!)
MSBuildの何が問題になっていますか?(elmah.dll)参照をMyWebProject1のビンにコピーするにはどうすればよいですか?
すべてのプロジェクトのビルド後のコマンドにビルド後のコピーアクションを追加したくない!(多くのプロジェクトがMyBaseProjectに依存していると想像してください!)