環顧四周後,我無法找到這個問題的簡單答案。MSBuild:添加額外的文件進行編譯,而不改變項目文件
我想創建一個MSBuild文件,以便我可以在Visual Studio 2010 express中輕鬆使用SpecFlow和NUnit。
下面的文件不完整,這僅僅是一個概念的證明,它需要更通用。
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<BuildDependsOn>
BuildSolution;
SpecFlow;
BuildProject;
NUnit;
</BuildDependsOn>
</PropertyGroup>
<PropertyGroup>
<Solution>C:\Users\Craig\Documents\My Dropbox\Cells\Cells.sln</Solution>
<CSProject>C:\Users\Craig\Documents\My Dropbox\Cells\Configuration\Configuration.csproj</CSProject>
<DLL>C:\Users\Craig\Documents\My Dropbox\Cells\Configuration\bin\Debug\Configuration.dll</DLL>
<CSFile>C:\Users\Craig\Documents\My Dropbox\Cells\Configuration\SpecFlowFeature1.feature.cs</CSFile>
</PropertyGroup>
<Target Name="Build" DependsOnTargets="$(BuildDependsOn)">
<Message Text="Build Started" Importance="high" />
<Message Text="Build Ended" Importance="high" />
</Target>
<Target Name="BuildSolution">
<Message Text="BuildSolution Started" Importance="high" />
<MSBuild Projects="$(Solution)" Properties="Configuration=Debug" />
<Message Text="BuildSolution Ended" Importance="high" />
</Target>
<Target Name="SpecFlow">
<Message Text="SpecFlow Started" Importance="high" />
<Exec Command='SpecFlow generateall "$(CSProject)"' />
<Message Text="SpecFlow Ended" Importance="high" />
</Target>
<Target Name="BuildProject">
<Message Text="BuildProject Started" Importance="high" />
<MSBuild Projects="$(CSProject)" Properties="Configuration=Debug" />
<Message Text="BuildProject Ended" Importance="high" />
</Target>
<Target Name="NUnit">
<Message Text="NUnit Started" Importance="high" />
<Exec Command='NUnit /run "$(DLL)"' />
<Message Text="NUnit Ended" Importance="high" />
</Target>
</Project>
SpecFlow任務查找.csproj文件並創建一個SpecFlowFeature1.feature.cs。 構建.csproj時需要包含此文件,以便NUnit可以使用它。
我知道我可以修改(直接或在副本上).csproj文件以包含生成的文件,但我寧願避免這種情況。
我的問題是:有沒有辦法使用MSBuild任務來建立項目文件,並告訴它包括一個額外的文件包含在構建?
謝謝。
我閱讀了您的博客文章,並遵循了所有步驟,但它對我無效。作爲一個例子,我使用Tekpub MVC初學者網站,它不起作用。我得到的錯誤是: 「C:\ WebTest \ VS2010ExpressSpecFlow.xml」(默認目標)(1) - > (AddSpecFlowCSFilesToProject target) - > C:\ WebTest \ VS2010ExpressSpecFlow.xml(86,5):error : 你調用的對象是空的。 – WVDominick 2010-06-21 14:33:58
+1需要時間來做到這一點。 – WVDominick 2010-06-21 14:34:30
謝謝你的去處,讓人們碰到它就是我需要的。我會在有空的時候儘快看看......大概是這個週末。 – 2010-06-24 09:19:06