加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:30:01 所属栏目:百科 来源:网络整理
导读:我有一个问题,我不知道它是否可以解决.我在Visual Studio 2005上有一个C#项目,我想根据预处理器常量创建不同的DLL名称.我现在拥有的是预处理器常量,两个snk文件和两个程序集的guid.我还创建了两个配置(调试和调试预处理器),并使用适当的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> ''

因此,您必须更改文化信息,版本或强名称.

两个最简单的选项是:

>更改装配版本:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读