当前位置 : 主页 > 编程语言 > c语言 >

c# – 如何在一个项目中创建不同的DLL?

来源:互联网 收集:自由互联 发布时间:2021-06-25
我有一个问题,我不知道它是否可以解决.我在Visual Studio 2005上有一个C#项目,我想根据预处理器常量创建不同的DLL名称.我现在拥有的是预处理器常量,两个snk文件和两个程序集的guid.我还创
我有一个问题,我不知道它是否可以解决.我在Visual Studio 2005上有一个C#项目,我想根据预处理器常量创建不同的DLL名称.我现在拥有的是预处理器常量,两个snk文件和两个程序集的guid.我还创建了两个配置(调试和调试预处理器),并使用适当的snk和guid完美编译.

#if PREPROCESSOR_CONSTANT
[assembly: AssemblyTitle("MyLibraryConstant")]
[assembly: AssemblyProduct("MyLibraryConstant")]
#else
[assembly: AssemblyTitle("MyLibrary")]
[assembly: AssemblyProduct("MyLibrary")]
#endif

现在,我必须将两个程序集放入GAC.添加第一个组件没有问题,但第二个组件没有问题.

如何从一个Visual Studio项目创建两个或更多不同的程序集?

有可能我忘了在“AssemblyInfo.cs”中包含一个新行来根据预处理器常量更改DLL名称吗?

以下是Post-Build事件的示例:

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”以支持其他配置,并添加部分以支持更多配置.

该脚本将创建两个具有不同文件名的dll;要创建两个不同的AssemblyNames,您有两个选项.

程序集名称构建为follows:

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而言,这两个选项都会产生两个不同的程序集 – 因为它比较了完整的程序集名称,而不是“简单”名称.

网友评论