每个构建的唯一程序集名称

我正在尝试在构建期间更改我的dll的程序集名称。 我创建了另一个更改csproj文件中的程序集名称的exe,我在预构建期间执行该文件。 但似乎我对csproj文件的更改只在构建完成后生效,这当然不是我想要的。

程序集名称每次构建时都必须是唯一的,所以我通过附加GUID来创建它。

var xmlDoc = XDocument.Load(projectFile); XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003"; string newAssemblyName = originalAssemblyName + "_" + Guid.NewGuid().ToString("N"); xmlDoc.Element(ns + "Project").Element(ns + "PropertyGroup").Element(ns + "AssemblyName").Value = newAssemblyName; xmlDoc.Save(projectFile); 

我想知道是否有一种方法可以在预构建期间“强制”重新加载csproj,或者如果有另一种方法,我可以在每次构建解决方案时获得唯一的程序集名称。

我在VS2013的csproj文件中做了一些成功:

  [...]  $([System.Guid]::NewGuid())  [...] $(MyNewGuid) 

至少,每次我进行重建时,它似乎都会为名称生成一个具有不同GUID的程序集。

如果您使用的是特别旧版本的msbuild,您可能需要在此处查找创建GUID的替代方法: http : //phoebix.com/2013/08/08/who-got-the-func-part-3 -产生-A-GUID-在-的msbuild /