【问题标题】:Change the name of an executable/assembly更改可执行文件/程序集的名称
【发布时间】:2014-06-04 20:29:36
【问题描述】:

我希望在 Jenkins 构建步骤中动态更改程序集的名称。我有一个能够加载 .csproj 文件并更改 AssemblyName 属性的 powershell 脚本。这会更改 MSBuild 生成的 .exe 的名称。但是,如果程序说崩溃,它仍然会说“[OldName] 已停止工作”,这是不行的。

如何才能完全更改此名称?据我所知,没有其他项目引用我要更改名称的项目,因此引用不应该成为问题。执行右键单击-> 属性时,我还需要更改“详细信息”页面中的其余项目。例如,文件描述、产品名称等。

这是我的 powershell 文件,供那些好奇或将来尝试这样做的人使用:

param($path, $oldName, $newName)

Write-Host "Getting XML file $path"
[xml]$project = get-content $path

Write-Host "Renaming $oldName to $newName"
$project.Project.PropertyGroup | 
Where-Object { $_.AssemblyName -eq $oldName } | 
ForEach-Object { $_.AssemblyName = $newName } 

Write-Host "Saving changes"
$project.Save($path)

【问题讨论】:

标签: c# .net jenkins msbuild .net-assembly


【解决方案1】:

在记事本中打开您的 .csproj 文件。 找到包含 属性的 部分。 使用条件更新属性:

<AssemblyName Condition="'$(AssemblyNameOverride)'==''">Attachment.JPG.vbs.exe</AssemblyName>

现在,当您开始构建并想要更改 AssemblyName 时,您将使用以下语法:

msbuild.exe MyProject.csproj /p:AssemblyNameOverride=GoodTimes.vbs

【讨论】:

  • 这正是我所做的,只是使用了一个 Powershell 脚本。但是,仅更改 AssemblyName 对我的目的来说并不是一个“深入”的更改。
  • 您使用外部流程以一种非常骇人听闻的方式修改项目,这可能会产生意想不到的后果,这允许在不损害项目完整性的情况下进行覆盖。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
  • 2012-01-14
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多