C# 更改可执行文件/程序集的名称

C# 更改可执行文件/程序集的名称,c#,.net,jenkins,msbuild,.net-assembly,C#,.net,Jenkins,Msbuild,.net Assembly,我希望在Jenkins构建步骤中动态更改程序集的名称。我有一个powershell脚本,可以加载.csproj文件并更改AssemblyName属性。这将更改MSBuild生成的.exe的名称。然而,如果程序说崩溃,它仍然会说[OldName]已经停止工作,这是不好的 如何完全更改此名称?据我所知,没有其他项目引用我试图更改其名称的项目,因此引用不应该是一个问题。在执行右键单击->属性时,我还需要更改在详细信息页面中找到的其他项目。e、 文件描述、产品名称等 以下是我的powershell文件,

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

如何完全更改此名称?据我所知,没有其他项目引用我试图更改其名称的项目,因此引用不应该是一个问题。在执行右键单击->属性时,我还需要更改在详细信息页面中找到的其他项目。e、 文件描述、产品名称等

以下是我的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)

在记事本中打开.csproj文件。 查找包含属性的节。 使用以下条件更新属性:

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

使用是一种比处理csproj文件更好的方法。这正是我所做的,只是使用Powershell脚本。但是,仅更改AssemblyName对我来说还不够深入。您使用外部流程以非常粗糙的方式修改项目,可能会产生意外的后果,这允许在不影响项目完整性的情况下进行重写。
msbuild.exe MyProject.csproj /p:AssemblyNameOverride=GoodTimes.vbs