2013-01-15 74 views
2

您要發佈的應用程序有兩個名稱,productName和publishName(publishName/AssemblyName,我認爲它們是相同的)。這兩個都可以在.csproj文件中指定。如何在msbuild命令行參數中設置publishName/AssemblyName?

我想使用MSBuild的命令行參數在不更改.csproj文件的情況下設置這兩者。到目前爲止,我已經使用msdn的this頁面,並找出如何更改產品名稱。

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

如何以類似的方式更改publishName?

當我說publishName我是指使用.application擴展名創建的文件。任何人都知道我需要什麼財產 -/p:*?

我也檢查了一個Stack Overflow page並嘗試所有的建議,但他們沒有工作。

回答

0

嘗試以下操作:

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

這是從MSBuild Command-Line Reference拍攝。

+0

這阻止我能夠發佈 – jgerstle

+0

@ihbh什麼是您收到的錯誤信息? –

+0

我得到了很多這些(這工作時,我不使用你建議的組裝名稱參數,順便說一句,我看着那個鏈接,我沒有看到你在說什麼,似乎並沒有列出作爲一個有效的參數): C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(4264,5):錯誤MSB3073:命令「xcopy * .dll /kqry 「用代碼4退出。[* .csproj] – jgerstle

1

請勿包含引號!

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

此外,如果您在同一個解決方案中有另一個項目 - 兩者將得到相同的程序集名稱,這將不起作用!

1

爲了解決這個問題,我說我自己的變量中的.csproj文件來控制.exe文件的名稱(不影響子項目的名稱版本):

<!-- Make the assembly name configurable --> 
<AssemblyName Condition=" '$(MSBuildAssemblyName)' == '' ">MyDefaultAssemblyName</AssemblyName> 
<AssemblyName Condition=" '$(MSBuildAssemblyName)' != '' ">$(MSBuildAssemblyName)</AssemblyName> 

如果沒有指定的MSBuildAssemblyName在命令行中,它使用默認名稱(MyDefaultAssemblyName)。

在命令行中,調用它是這樣的: 的MSBuild .../P:MSBuildAssemblyName = MyOverriddenName ...

相關問題