Pat*_*ick 9 c# msbuild conditional-compilation visual-studio
您是否可以告诉Visual Studio输出不同的exe文件名,具体取决于是否设置了特定的条件编译符号?
Fre*_*örk 11
如果将.csproj文件加载到文本编辑器中,则可以控制该AssemblyName属性:
<AssemblyName Condition="'$(Configuration)' == 'Debug'">WindowsFormsApplication9.Debug</AssemblyName>
<AssemblyName Condition="'$(Configuration)' != 'Debug'">WindowsFormsApplication9</AssemblyName>
Run Code Online (Sandbox Code Playgroud)
请注意,这不仅会更改文件名,还会更改程序集名称,如果您有其他引用程序集的代码,则可能会出现问题.
我自己从来没有这样做,所以我不能说这个想法有多好或多坏.
由于Fredrik建议的为assemblyname标记定义条件似乎使Visual Studio变得怪异,您可以稍后在csproj文件中更改程序集名称.使用Choose元素有点像if语句,因此如果满足条件,则可以附加名称,如下所示.
在例如DefineConstants条件属性中获取子字符串似乎不可能(根据MSDN)使用"普通的vanilla MSBuild",但是可以定义自己的构建目标并在使用/p:Tag=value(MSBuild命令行参考)进行编译时设置属性
...
<Tag>true</Tag>
</PropertyGroup>
<Choose>
<When Condition=" '$(Tag)' == 'true' ">
<PropertyGroup>
<AssemblyName>$(AssemblyName).TagDefined</AssemblyName>
</PropertyGroup>
</When>
</Choose>
<ItemGroup>
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9118 次 |
| 最近记录: |