Я написал пользовательскую задачу, которая создает файлы, создавая параллельный файл с другим расширением.Может ли MSBuild изменить собственный файл проекта?
Когда MSBuild идет и создает такой файл, я бы хотел добавить его к самому файлу проекта. Я также хотел бы вложить встроенный файл под номером источник (с DependentUpon
).
Может ли MSBuild сделать это? Нужно ли перезагрузить проект? Могу ли я автоматизировать все это?
Ниже мой .targets файл, который получает установлен NuGet при добавлении моего пакета:
<UsingTask TaskName="PreCompiler" AssemblyFile="..\tools\Compiler.dll">
</UsingTask>
<UsingTask TaskName="GenerateDependencies" AssemblyFile="..\tools\Compiler.dll">
</UsingTask>
<PropertyGroup>
<BuildDependsOn>
$(BuildDependsOn);
BuildCoffeeFiles;
BuildLessFiles
</BuildDependsOn>
<ContentDir>Content\</ContentDir>
</PropertyGroup>
<ItemGroup Condition="'$(BuildingInsideVisualStudio)'=='true'">
<AvailableItemName Include="CoffeeScript" />
<AvailableItemName Include="Less" />
</ItemGroup>
<Target Name="GenerateCoffeeDependencies">
<GenerateDependencies Include="@(CoffeeScript->'%(FullPath)')">
<Output TaskParameter="Dependencies" ItemName="InputCoffeeFiles"/>
</GenerateDependencies>
<ItemGroup>
<InputCoffeeFiles
Include="@(InputCoffeeFiles->Distinct())"
KeepDuplicates='false' />
</ItemGroup>
</Target>
<Target Name="BuildCoffeeFiles"
DependsOnTargets="GenerateCoffeeDependencies"
Inputs="@(InputCoffeeFiles)"
Outputs="@(CoffeeScript->'%(RelativeDir)%(Filename).js')">
<PreCompiler Include="@(CoffeeScript->'%(FullPath)')" />
</Target>
<Target Name="GenerateLessDependencies">
<GenerateDependencies Include="@(Less->'%(FullPath)')">
<Output TaskParameter="Dependencies" ItemName="InputLessFiles"/>
</GenerateDependencies>
<ItemGroup>
<InputLessFiles
Include="@(InputLessFiles->Distinct())"
KeepDuplicates='false' />
</ItemGroup>
</Target>
<Target Name="BuildLessFiles"
DependsOnTargets="GenerateLessDependencies"
Inputs="@(InputLessFiles)"
Outputs="@(Less->'%(RelativeDir)%(Filename).css')">
<PreCompiler Include="@(Less->'%(FullPath)')" />
</Target>
Не могли бы вы предоставить некоторый код из msbuild? Порядок в этом случае важен. – Marlos
Это почти полный контент. Compiler.dll обрабатывает живую перекомпиляцию, когда это необходимо в моем приложении Nancy, поскольку мне не особенно нравится Squishit или Cassette – Crisfole
возможный дубликат [Modify .csproj in MSBuild] (http://stackoverflow.com/questions/25435857/modify- csproj-in-msbuild) –