ビルド中に 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 を「強制的に」リロードする方法があるかどうか、またはソリューションをビルドするたびに一意のアセンブリ名を取得できる別の方法があるかどうか疑問に思っていました。