2009-09-07 42 views
9

64 bit yapı makinesinde çalışırken, MSBuild Community Tasks Project'dan Attrib göreviyle ilgili bir sorun yaşıyorum.MSBuild.Community.Tasks.Attrib, x64 makinede başarısız oluyor

Sorunun ne göstermek için bir araya bu küçük test projesini koyduk:

<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> 

Ben Target olarak TestAttrib kullanarak MSBuild ile bu proje oluşturma girişiminde aşağıdaki sonuçlar elde

C:> msbuild "C: _Source Code \ Test.vbproj"/t: TestAttrib Microsoft (R) Yapılandırma Motoru Sürüm 3.5.30729.1 [Microsoft .NET Framework, Sürüm 2.0.50727.4016] Telif Hakkı (C) Microsoft Corporation 2007. Her hakkı saklıdır.

Yapı üretildi 7/09/2009 2:50:12 PM.
Düğüm 0'da "C: _Source Code \ Test.vbproj" projesi (TestAttrib target (s)).
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 Kod
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 kurmak: C: _Source Kod
MSBuildProjectExtension: Test.vbproj
MSBuildProjectFullPath: C: _Source Kod \ Test.vbproj
MSBuildProjectName
MSBuildProjectFile .vbproj : Test
MSBuildStartupDirectory: C: \
C: _Source Kodu \ Test.vbproj (26,5): hata MSB4062: "MSBuild.Community.Tasks.Attrib" görevi C: \ Program derlemesinden yüklenemedi Dosyalar MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dll \. Dosya veya derleme 'dosyası yüklenemedi: /// C: \ Program Files \ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dll' veya bağımlılıklarından biri. Sistem belirtilen dosyayı bulamıyor. Beyanın doğru olduğunu ve montajın ve tüm bağımlılıklarının mevcut olduğunu doğrulayın. Bitti Yapı Projesi "C: _Source Code \ Test.vbproj" (TestAttrib hedefleri) - FAILED.

Yapı Başarısız.

"C: _Source Code \ Test.vbproj" (TestAttrib target) (1) -> (TestAttrib target) -> C: _Source Code \ Test.vbproj (26,5): error MSB4062: "MSBuild. Community.Tasks.Attrib "görevi C: \ Program Files \ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dll dosyasından yüklenemedi. Dosya veya derleme 'dosyası yüklenemedi: /// C: \ Program Files \ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dll' veya bağımlılıklarından biri. Sistem belirtilen dosyayı bulamıyor. Beyanın doğru olduğunu ve montajın ve tüm bağımlılıklarının mevcut olduğunu doğrulayın.

0 Warning(s) 
1 Error(s) 

Geçen Süre 00:00:00.05

MSBuild, (MSBuildExtensionsPath32) değişkenini kullanarak görevleri açıkça aldığımda, C: \ Program Files \ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dll dosyasındaki Attrib görevini neden aramaktadır? o Aslen
edildi:

cevap

7

Ben düzenleme hattı 6 ile sorunu çözdünüz için "\ Program Files (x86) \ MSBuild.Community.Tasks.Targets \ MSBuild \ MSBuildCommunityTasks C": görünmek

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

ve ben bunu değişmiş:

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

nota $ için $ değişikliği (MSBuildExtensionsPath) (MSBuildExtensionsPath32)

iken bu se Ems, benim için sorunum şimdi sıraladı, neden ben ilk etapta MSBuild.Community.Tasks.Targets dosyasını düzenlemek zorunda emin değilim - yükleyici dosyanın doğru olduğundan emin olur. Bu yüzden belki de MSBuild.Community.Tasks.Targets dosyasını düzenlemek dünyanın en iyi fikri değil, bu yüzden liderini takip etmeye karar verirseniz dikkatli olun.

+1

aynı sorun vardı, teşekkür ederim! – PatrickJ

5

Bu açık bir şekilde çok geç bir cevaptır, ama başka birinin bu soruna sahip olması durumunda buna ekleyeceğimi düşündüm. MSBuild.Community.Tasks.Targets dosyasını düzenlemek yerine, yapı dosyanızdaki bir özellik grubundaki MSBuildCommunityTasksPath özelliğini tanımlayabilirsiniz. Örneğin, benim yapı komut üstündeki böyle bir şey var:

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

Sonra kaynak denetiminde bir araç dizinde MSBuildCommunityTasks klasörü saklayın. Bu, diğer insanların kaynağı kurup, herhangi bir şey kurmadan hemen inşa edebilmesi anlamına geliyor.

Alkış, Adam

İlgili konular