I have a question I don’t know if it can be solved. I have one C# project on Visual Studio 2005 and I want to create different DLL names depending on a preprocessor constant. What I have in this moment is the preprocessor constant, two snk files and two assembly’s guid. I also create two configurations (Debug and Debug Preprocessor) and they compile perfectly using the snk and guid appropriate.
#if PREPROCESSOR_CONSTANT [assembly: AssemblyTitle('MyLibraryConstant')] [assembly: AssemblyProduct('MyLibraryConstant')] #else [assembly: AssemblyTitle('MyLibrary')] [assembly: AssemblyProduct('MyLibrary')] #endif
Now, I have to put the two assemblies into the GAC. The first assembly is added without problems but the second isn’t.
What can I do to create two or more different assemblies from one Visual Studio project?
It’s possible that I forgot to include a new line on ‘AssemblyInfo.cs’ to change the DLL name depending on the preprocessor constant?
Here is a sample Post-Build event:
Change
DebugOutput.dllandReleaseOutput.dllto the proper filenames. you can change'Debug'and'Release'to support other configurations, and add sections to support more configurations.That script will create two dlls with different file names; to create two different AssemblyNames, you have two options.
The assembly name is built as follows:
So you have to either change the culture info, the version or the strong name.
The two simplest options are:
Change the assembly version:
Change the keyfile – create two keyfiles with the
sntool, and inAssemblyInfo.cs:Both these options will result in two different assemblies as far as the GAC knows – since it compares the full assembly name, and not the ‘simple’ name.