如何在 MSBuild 命令行参数中设置 publishName/AssemblyName?

8
你将要发布的应用程序有两个名称,一个是productName,另一个是publishName(我认为publishName/AssemblyName是相同的)。这两个名称可以在.csproj文件中指定。我想设置这两个名称,但又不想改动.csproj文件,使用MSBuild命令行参数进行设置。迄今为止,我已经使用了MSDN上的此页面并找到了如何更改产品名称的方法。
MSBuild.exe /t:Build /p:ProductName=$productName. 

我该如何以类似的方式更改publishName?

当我说publishName时,我是指创建具有 .application 扩展名的文件。 有人知道我需要用哪个属性 - /p:*?

我还查看了一个Stack Overflow页面并尝试了那里的所有建议,但它们都没有起作用。

3个回答

10
为了解决这个问题,我在.csproj文件中添加了自己的变量来控制.exe文件的名称(而不影响子项目构建的名称):
<!-- Make the assembly name configurable -->
<AssemblyName Condition=" '$(MSBuildAssemblyName)' == '' ">MyDefaultAssemblyName</AssemblyName>
<AssemblyName Condition=" '$(MSBuildAssemblyName)' != '' ">$(MSBuildAssemblyName)</AssemblyName>

如果在命令行上没有指定MSBuildAssemblyName,则会使用默认名称(MyDefaultAssemblyName)。

在命令行上调用它,像这样: msbuild ... /p:MSBuildAssemblyName=MyOverriddenName ...


我不能保证这是正确的答案,因为它是在原问题发布很久之后才发布的,而且我已经不再从事C#工作了,但看起来是正确的,所以我会将其标记为答案。 - jgerstle
仍在为我工作! - AtliB

3

不要包含引号!

MSBuild.exe /t:Build /p:ProductName=$productName;AssemblyName=yourNameHere

此外,如果您在同一个解决方案中有另一个项目,这种方法将无法工作-它们都将获得相同的程序集名称!

0
尝试以下步骤:
MSBuild.exe /t:Build /p:ProductName=$productName;AssemblyName="yourNameHere"

这段内容来自于MSBuild命令行参考

那阻止了我能够发布。 - jgerstle
我有很多这样的问题(当我不使用你建议的程序集名称参数时,这个工作正常,顺便说一下,我看了一下那个链接,我没有看到你在说什么,它似乎没有将其列为有效参数): C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(4264,5): error MSB3073: 命令“xcopy .dll <path to bin folder> /kqry”退出代码为4。[.csproj] - jgerstle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接