2013-01-15 5 views
2

Il existe deux noms pour l'application que vous publiez: productName et publishName (publishName/AssemblyName, je pense qu'ils sont identiques). Les deux que vous pouvez spécifier dans votre fichier .csproj.Comment définir publishName/AssemblyName dans les paramètres de ligne de commande msbuild?

Je souhaite définir les deux sans changer le fichier .csproj en utilisant les paramètres de ligne de commande MSBuild. Jusqu'à présent, j'ai utilisé la page this de msdn et j'ai compris comment changer le nom du produit.

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

Comment puis-je modifier le nom de publication d'une manière similaire?

Lorsque je dis publishName, je veux dire le fichier créé avec l'extension .application. Quelqu'un sait quelle propriété j'ai besoin pour cela -/p: *?

J'ai également vérifié un Stack Overflow page et essayé toutes les suggestions là mais elles n'ont pas fonctionné.

Répondre

0

les opérations suivantes:

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

Cela a été pris du MSBuild Command-Line Reference.

+0

qui m'a empêché d'être en mesure de publier – jgerstle

+0

@ihbh Quel était le message d'erreur que vous avez reçu ? –

+0

J'ai beaucoup de ceux-ci (cela fonctionne quand je n'utilise pas ce paramètre de nom d'assembly que vous avez suggéré, ce que j'ai regardé ce lien et je ne vois pas de quoi vous parlez ne semble pas l'indiquer comme un paramètre valide): C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (4264,5): erreur MSB3073: La commande "xcopy * .dll /kqry "quitté avec le code 4. [* .csproj] – jgerstle

1

N'incluez pas les guillemets! De plus, cela ne fonctionnera pas si vous avez un autre projet dans la même solution - les deux obtiendront le même nom d'assemblage!

1

Pour résoudre ce problème, j'ai ajouté ma propre variable dans le fichier .csproj pour contrôler le nom du fichier .exe (sans affecter le nom du sous-projet builds):

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

si MSBuildAssemblyName n'est pas spécifié sur la ligne de commande, il utilise le nom par défaut (MyDefaultAssemblyName).

Sur la ligne de commande, appelez comme ceci: msbuild .../p: MSBuildAssemblyName = MyOverriddenName ...

Questions connexes