根据配置更改输出dll的名称

时间:2014-10-08 20:07:03

标签: .net visual-studio com-interop

看起来它应该很简单,但基本上我有一个类库的两个配置。一个是普通的.NET 4.0配置,另一个配置为注册COM Interop,另外还定义了一个编译符号,这样我就可以解决一些与处理器前指令相关的COM相关问题。

问题是,在部署时,这两个DLL必须位于同一个文件夹中,以便调用应用程序能够使用它们(按照设计,它不能做太多关于它)。在将每个配置编译到其各自的bin/子文件夹时,我已经完成了所有工作,包括使用不同的强名称密钥对两个配置进行签名,以便GAC看到两个不同的程序集,即使名称和版本相同。

但是将它们放在同一个文件夹中需要重命名,这就是问题所在。

如果在Visual Studio中我可以在“应用程序”选项卡中有条件地设置“程序集名称”属性,那么了不起的内容是什么,但看起来该选项卡是项目范围的,而不是配置范围的。除此之外,有没有办法指定不同的文件名,这样不会导致运行时问题,更不用说开发人员的健全问题了?我的目标是能够为COM不支持的.NET客户端提供功能,同时仍然具有与COM的兼容性。我非常希望不将所有内容复制并粘贴到另一个只有不同程序集名称的项目中......

1 个答案:

答案 0 :(得分:3)

您可以通过编辑.csproj文件来实现。从主<AssemblyName>中删除<PropertyGroup>元素并将其放在相应的配置特定的PropertyGroup中:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <AssemblyName>StackOverflow26265487.Debug</AssemblyName>
    <!-- ... -->
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <AssemblyName>StackOverflow26265487.Release</AssemblyName>
    <!-- ... -->
</PropertyGroup>