2009-09-07 11 views
9

64ビットビルドマシンで実行しているときにMSBuild Community Tasks ProjectからAttribタスクに問題があります。x64マシンでMSBuild.Community.Tasks.Attribが失敗する

私は問題が何であるかを示すために、一緒にこの小さなテストプロジェクトを入れている:

<Project ToolsVersion="3.5" DefaultTargets="Build" 
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <Import Project="$(MSBuildExtensionsPath32)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> 

    <Target Name="PrintProperties"> 
    <Message Text="MSBuildCommunityTasksPath: $(MSBuildCommunityTasksPath)"/> 
    <Message Text="MSBuildCommunityTasksLib: $(MSBuildCommunityTasksLib)"/> 
    <Message Text="MSBuildNodeCount: $(MSBuildNodeCount)"/> 
    <Message Text="MSBuildExtensionsPath: $(MSBuildExtensionsPath)"/> 
    <Message Text="MSBuildExtensionsPath32: $(MSBuildExtensionsPath32)"/> 
    <Message Text="MSBuildProjectDirectoryNoRoot: $(MSBuildProjectDirectoryNoRoot)"/> 
    <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)"/> 
    <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)"/> 
    <Message Text="MSBuildBinPath: $(MSBuildBinPath)"/> 
    <Message Text="MSBuildExtensionsPath: $(MSBuildExtensionsPath)"/> 
    <Message Text="MSBuildProjectDefaultTargets: $(MSBuildProjectDefaultTargets)"/> 
    <Message Text="MSBuildProjectDirectory: $(MSBuildProjectDirectory)"/> 
    <Message Text="MSBuildProjectExtension: $(MSBuildProjectExtension)"/> 
    <Message Text="MSBuildProjectFile: $(MSBuildProjectFile)"/> 
    <Message Text="MSBuildProjectFullPath: $(MSBuildProjectFullPath)"/> 
    <Message Text="MSBuildProjectName: $(MSBuildProjectName)"/> 
    <Message Text="MSBuildStartupDirectory: $(MSBuildStartupDirectory)"/> 
    </Target> 

    <Target Name="TestAttrib" DependsOnTargets="PrintProperties"> 
    <Attrib Files="Test.txt" ReadOnly="false" /> 
    </Target> 

</Project> 

私がターゲットとしてTestAttribを使用してのMSBuildを使用してこのプロジェクトをビルドしようとすると、私は次のような結果を得る

C:> msbuild "C:_Source Code \ Test.vbproj"/t:TestAttrib Microsoft(R)ビルドエンジンバージョン3.5.30729.1 [Microsoft .NET Framework、バージョン2.0.50727.4016] Copyright(C)Microsoft Corporation 2007。全著作権所有。

ビルドスタート7/09/2009 2:50:12 PM。
ノード0(TestAttribターゲット)でプロジェクト "C:_Source Code \ Test.vbproj"を実行します。
MSBuildCommunityTasksLibします。C:\ Program Files \ MSBuildの\ MSBuildCommunityTasks \ MSBu ild.Community.Tasks.dll
MSBuildNodeCount:1
MSBuildExtensionsPathします。C:\ Program Files \ MSBuildの
MSBuildExtensionsPath32します。C:\ Program Files(x86の)\ MSBuildの
MSBuildProjectDirectoryNoRoot:_Sourceコード
MSBuildToolsPath:C:\ WINDOWS \ Microsoft.NET \ Framework64 \ V3.5
MSBuildToolsVersion:3.5
MSBuildBinPath:C:\ WINDOWS \ Microsoft.NET \ Framework64 \ V3.5
MSBuil dExtensionsPathします。C:\ Program Files \ MSBuildの
MSBuildProjectDefaultTargets:
MSBuildProjectDirectoryをビルドします。C:_Sourceコード
MSBuildProjectExtension:Test.vbproj
MSBuildProjectFullPath:C:_Sourceコード\ Test.vbproj
MSBuildProjectName
MSBuildProjectFileの.vbproj :テスト
MSBuildStartupDirectory:C:\
C:_Source Code \ Test.vbproj(26,5):エラーMSB4062: "MSBuild.Community.Tasks.Attrib"タスクをアセンブリC:\ Programから読み込めませんでしたFiles \ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dll。ファイルまたはアセンブリ 'file:/// C:\ Program Files \ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dll'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。宣言が正しいこと、およびアセンブリとそのすべての依存関係が利用可能であることを確認します。 ビルドプロジェクト "C:_Source Code \ Test.vbproj"(TestAttrib target) - FAILED。

ビルドFAILED。 "ソースコード\ Test.vbproj"(TestAttribターゲット) - >(TestAttribターゲット) - > C:_Source Code \ Test.vbproj(26,5):エラーMSB4062: "MSBuild。 Community.Tasks.Attrib "タスクをアセンブリC:\ Program Files \ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dllから読み込めませんでした。ファイルまたはアセンブリ 'file:/// C:\ Program Files \ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dll'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。宣言が正しいこと、およびアセンブリとそのすべての依存関係が利用可能であることを確認します。

0 Warning(s) 
1 Error(s) 

時間経過00:00:00。05

(MSBuildExtensionsPath32)変数を使用してタスクを明示的にインポートしたときに、MSBuildがC:\ Program Files \ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dllでAttribタスクを検索するのはなぜですか?

答えて

7

私はの編集ライン6で問題を修正しているように見える "C:MSBuildの\ MSBuildCommunityTasks \ MSBuild.Community.Tasks.Targets \ \プログラムファイル(x86の)"
は、もともとは:

<MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath)\MSBuildCommunityTasks</MSBuildCommunityTasksPath> 

<MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath32)\MSBuildCommunityTasks</MSBuildCommunityTasksPath> 

ノートこのSEながら$(MSBuildExtensionsPath32)

に$(MSBuildExtensionsPath)の変更を:

、私はそれを変更しました今のところ私の問題を整理しておきたいのですが、最初にMSBuild.Community.Tasks.Targetsファイルを編集しなければならない理由はわかりません。インストーラがファイルが正しいことを確認したと仮定しました。したがって、おそらくMSBuild.Community.Tasks.Targetsファイルを編集することは世界では最良のアイデアではないので、私の主導権を守ることに決めたら注意してください。

+1

は正確に同じ問題を抱えていた、ありがとう! – PatrickJ

5

これは明らかに遅すぎる回答ですが、他の誰かがこの問題を抱えている場合にはこれを追加すると思いました。 MSBuild.Community.Tasks.Targetsファイルを編集する代わりに、ビルドファイルのプロパティグループにMSBuildCommunityTasksPathプロパティを定義するだけで済みます。例えば、私は私のビルドスクリプトの先頭にこのようなものを持っている:

<PropertyGroup> 
    <ToolsDirectory>$(MSBuildProjectDirectory)\tools</ToolsDirectory> 
    <MSBuildCommunityTasksPath>$(ToolsDirectory)\MSBuildCommunityTasks</MSBuildCommunityTasksPath> 
</PropertyGroup> 

私は、ソースコントロールのtoolsディレクトリにMSBuildCommunityTasksフォルダを格納します。それは、他の人々が何もインストールせずにソースを引き出し、すぐに構築できることを意味します。

乾杯は、 アダム

関連する問題