2009-11-21 13 views
16

MSBuild Extension Pack'i, yükleyiciyi çalıştırmanızı gerektirmeyen "yerel" bir referansla birlikte kullanmanın bir yolu var mı? Diğer bir deyişle, hedefleri bir çözüm öğeleri klasörüne kaydedebilir, böylece her geliştirici yüklemek zorunda kalmaz mı?MSBuild Extension Pack'i kurulum olmadan kullanmak mümkün mü?

+1

Bu tür bir "yükleme" adı, "xcopy dağıtımı" olarak adlandırılır –

+0

Son yorumum, dilbilgisi konusunda biraz zayıf. Üzgünüm, uykum var ... –

+0

Takip etmiyorum. Uzantıları yüklemek için msi'yi çalıştırmadan, MSBuild Uzantılarını makinedeki herhangi bir konumda referans gösterip gösteremeyeceğinizi merak ediyordum. – Bob

cevap

20

Görevler için içe aktarma ifadesinden önce, ExtensionTasksPath özelliğini bildirmeniz gerekir. Örneğin bir göz atın:

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <ExtensionTasksPath Condition="'$(ExtensionTasksPath)' == ''">E:\Data\Development\My Code\Community\MSBuild\ExtensionPack\</ExtensionTasksPath> 
    </PropertyGroup> 

    <Import Project="$(ExtensionTasksPath)MSBuild.ExtensionPack.tasks"/> 

    <Target Name="Demo"> 
    <MSBuild.ExtensionPack.FileSystem.File TaskAction="GetTempFileName"> 
     <Output TaskParameter="Path" PropertyName="TempPath"/> 
    </MSBuild.ExtensionPack.FileSystem.File> 

    <Message Text="TempPath: $(TempPath)" /> 
    </Target> 

</Project> 

MSBuild Topluluk görevleri benzer ancak mülkiyet MSBuildCommunityTasksLibadlandırılır. SDC görevleri için onun TasksPath adını aldığını düşünüyorum.

+0

Teşekkür ederiz! Sadece DNRtv bölümlerini MSBuild'de izledim ve harikalardı. – Bob

2

Bunu göreceli yollarla çalışmak için sorun yaşadım (örneğin, c: \ blah değil .. \ blah).

Bunun nedeni, eğer göreli olsaydı ExtensionTasksPath değişkenini yeniden kullanamazsınız çünkü dosyanız (.csproj) ve MsBuild.ExtensionPack.tasks dosyası farklı konumlarda olduğundan, göreli olarak farklı bir değer elde edilir. yolu.

<PropertyGroup> 
    <ExtensionTasksPath Condition="'$(ExtensionTasksPath)' == ''">..\4.0\</ExtensionTasksPath> 
    </PropertyGroup> 
    <Import Project="..\references\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks"/> 

sadece yerine ".. \ 4.0 \" ihtiyaç nedeni ": bu ne (sizin .Csproj dosyasının en üstünde koymak) benim için çalışma var bu Sonunda

"(boş) MsBuild.ExtensionPack.tasks dosyası boş algılar ve bu durumda bazı farklı şeyler yapar. Daha sonra yükseltmek istediğimde MsBuild.ExtensionPack.tasks dosyasını kesmek istemedim.

+0

Bu benim için çalıştı. Teşekkürler! –

İlgili konular