J'ai un msbuild qui appelle un fichier *.sln
lors de la compilation. Ce fichier de solution contient 10 projets cs, l'un d'eux (appelons-le main.csproject
) a le AssemblyName
comme WinMusic
. Le contenu du msbuild est la suivante:Modifier AssemblyName d'un csproject via msbuild
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Default value here -->
<DefineConstants Condition=" '$(DefineConstants)'==''" >TRACE</DefineConstants>
<SlnFiles Condition=" '$(SlnFiles)'==''" >FullProject.sln</SlnFiles>
</PropertyGroup>
<!-- <ItemGroup> -->
<!-- <SlnFiles Include="SlnFiles=$(SlnFiles2)"/> -->
<!-- </ItemGroup> -->
<Target Name="Build">
<MSBuild Projects="$(SlnFiles)"
Properties="DefineConstants=$(DefineConstants)"/>
</Target>
</Project>
Ma question est, comment définir la propriété AssemblyName
de la tâche msbuild ci-dessus? Pour clarifier, je parle de AssemblyName
dans csproject, pas de AssemblyInfo.cs
.
Edit: Voici le nouveau fichier build.proj
j'ai essayé, le FullProject.sln
est un fichier de solution avec un exe et une dll, mais le fichier msbuild renommé à la fois le dll et l'exe à NoMusic
. Ce que je veux, c'est juste de renommer l'exe en NoMusic
et la DLL devrait conserver le même nom.
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Default value here -->
<DefineConstants Condition=" '$(DefineConstants)'==''" >TRACE</DefineConstants>
<SlnFiles Condition=" '$(SlnFiles)'==''" >FullProject.sln</SlnFiles>
</PropertyGroup>
<Target Name="Build">
<MSBuild Projects="$(SlnFiles)"
Properties="DefineConstants=$(DefineConstants)"/>
<MSBuild Projects="WindowsFormsApplication1\WindowsFormsApplication1.csproj"
Properties="DefineConstants=$(DefineConstants);Platform=ANYCPU;AssemblyName=NoMusic"/>
</Target>
</Project>
De cette façon, vous redéfinissez la propriété dans le projet de la même manière que 'msbuild.exe main.csproject.csproj/p: AssemblyName = NoMusic'. Jetez un oeil à la documentation MSBuild si vous ne savez pas ce que fait le commutateur '/ p'. –
[ici] (http://social.msdn.microsoft.com/Forums/en/msbuild/thread/95a04398-05c1-4fea-b596-abbe156e6a84) contient des informations détaillées sur le processus d'évaluation des propriétés dans MSBuild. –
@James, je ne pense pas que cela fonctionne; Si vous avez 2 projets (un exe, un autre dll) dans votre solution, alors la DLL et l'exe seront renommés en "NoMusic", ce qui n'est évidemment pas ce que je veux. – Graviton