Вот пример события после сборки:
if "$(ConfigurationName)" == "Debug" goto Debug
if "$(ConfigurationName)" == "Release" goto Release
goto End
:Debug
del "$(TargetDir)DebugOutput.dll"
rename "$(TargetPath)" "DebugOutput.dll"
:Release
del "$(TargetDir)ReleaseOutput.dll"
rename "$(TargetPath)" "ReleaseOutput.dll"
:End
Измените DebugOutput.dll
и ReleaseOutput.dll
на правильные имена файлов. Вы можете изменить "Debug"
и "Release"
для поддержки других конфигураций и добавить разделы для поддержки дополнительных конфигураций.
Этот скрипт создаст две библиотеки с разными именами файлов; чтобы создать два разных AssemblyNames, у вас есть два варианта.
Имя сборки создается следующим образом: :
Name <,Culture = CultureInfo> <,Version = Major.Minor.Build.Revision> <, StrongName> <,PublicKeyToken> '\0'
Так что вам нужно либо изменить информацию о культуре, версию или строгое имя.
Два самых простых варианта:
Изменить версию сборки:
#if SOME_COMPILER_SYMBOL
[assembly: AssemblyVersion("1.0.0.0")]
#else
[assembly: AssemblyVersion("1.0.0.1")]
#endif
Изменить ключевой файл - создайте два ключевых файла с помощью инструмента sn
и в AssemblyInfo.cs
:
#if SOME_COMPILER_SYMBOL
[assembly: AssemblyKeyFile("FirstKey.snk")]
#else
[assembly: AssemblyKeyFile("SecondKey.snk")]
#endif
Обе эти опции приведут к двум разным сборкам, насколько GAC знает, поскольку он сравнивает полное имя сборки, а не «простое» имя.