4

x64 マシンで Visual Studio 2010 と TFS 2010 を使用しています。

ビルドで MSBuild Community Tasks ターゲットを使用しようとしています。このターゲットはソース管理に存在します。したがって、私のcsprojファイルでは、その特定のターゲットをインポートしていますが、次のエラーが発生します:

エラー MSB4062: "MSBuild.Community.Tasks.Attrib" タスクをアセンブリ C:\Program Files (x86)\MSBuild\MSBuildCommunityTasks\MSB uild.Community.Tasks.dll から読み込めませんでした。ファイルまたはアセンブリ 'file:///C:\Program Files (x86)\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。宣言が正しいこと、アセンブリとそのすべての依存関係が利用可能であること、タスクに Micros oft.Build.Framework.ITask を実装するパブリック クラスが含まれていることを確認します。[C:\SampleTest\SampleTest.csproj]

これが私のコードです:

   <Import Project="..\..\Builds\Common\MSBuildTasks\MSBuild.Community.Tasks\MSBuild.Community.Tasks.Targets" />
   <Target Name="BeforeBuild">
    <PropertyGroup>
      <MyService>ServiceName</MyService>
    </PropertyGroup>
    <ServiceController ServiceName="$(MyService)" Action="Stop" />-->
  </Target>

上記について何か考えはありますか?

プロジェクト ファイルで指定したのに、MSBuild が別の場所で dll を探そうとするのはなぜですか?

前もって感謝します、

4

1 に答える 1

5

問題はMSBuild.Community.Tasks.Targetsファイル内にあると思います - 実際にMSBuild.Community.Tasks.dllアセンブリを参照しているのはこのファイルです。

ファイルを開くと、次のUsingTaskような一連の要素が表示されます。

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Attrib" />

この$(MSBuildCommunityTasksLib)プロパティは、ファイルの先頭で次のように定義されています。

<PropertyGroup>
    <MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
    <MSBuildCommunityTasksLib>$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksLib>
</PropertyGroup>

$(MSBuildCommunityTasksPath)したがって、を呼び出す前にプロパティを設定する必要があるようです<Import>

于 2013-03-01T09:52:44.343 に答える