2016-05-26 30 views
1

我正在努力處理看似非常基本的任務,即將新的自定義目標添加到csproj文件並使用msbuild從命令行運行它。通過msbuild添加和運行自定義目標

我在網上做了大量的研究,但是我沒有找到實際工作的解決方案。

比方說,我添加以下目標到我的csproj文件:

<Target Name="TeamCity"> 
    <Message Text="I am Running!"/> 
    </Target> 

,甚至一些依賴於構建:

<Target Name="TeamCity" DependsOnTargets="Build"> 
    <Message Text="I am Running!"/> 
    </Target> 

這是MSBuild的文檔建議。

但是運行目標似乎是不可能的任務。 雖然我能夠上的csproj運行預定義的目標:

msbuild MySolution.sln /t:MyProject:Rebuild /p:Configuration="Release" /p:Platform="Any CPU" 

我不能跑我剛添加的目標 - 那就是的TeamCity目標:

msbuild MySolution.sln /t:MyProject:TeamCity /p:Configuration="Release" /p:Platform="Any CPU" 

我總是得到錯誤MSB4057 :項目中不存在目標「TeamCity」。

使這個運行的祕密是什麼?

PS。請注意,我需要的任務是在項目級別上工作,而不是解決方案。我需要運行msbuild MySolution.sln ...沒有多少錯誤地建議msbuild MyProject.csproj ...

回答

0

祕密是非常簡單的 - 你不能讓這個運行。

因爲,msbuild會生成中間項目文件(YourSolution.sln.metproj),但它不會從YourProject.csproj中導入,包括.targets文件。這就是爲什麼YourCustomTarget無法識別。

你可以嘗試的是使用Before/After Targets在預定義的構建流中注入你的目標。

希望它會有所幫助。

相關問題