После осмотра я не могу найти простой ответ на эту проблему.MSBuild: добавьте дополнительные файлы для компиляции без изменения файла проекта
Я пытаюсь создать файл MSBuild, чтобы я мог легко использовать SpecFlow и NUnit в Visual Studio 2010 express.
Файл ниже не является полным, это всего лишь доказательство концепции, и его необходимо сделать более универсальным.
<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) -> C: \ WebTest \ VS2010ExpressSpecFlow.xml (86,5): ошибка : В экземпляре объекта не задана ссылка на объект. – WVDominick
+1 за то, что нашли время, чтобы сделать это. – WVDominick
Благодарим вас за то, что вы попали, и это то, что мне нужно. Я посмотрю на это, как только у меня будет время ... возможно, в эти выходные. –