我有一个程序,主要是另一个程序的插件。我在一个项目中拥有核心逻辑,UI等,也可以独立于父程序使用。然后,我有一个“连接器”部分,它将我的程序连接到父程序,并且本质上是两者之间的通信器。我还支持父软件的多个版本。
现在是问题所在。我有使用System.Windows.Interactivity.dll的核心程序。似乎父程序也使用此功能,但是父级的早期支持版本使用.NET 4.0交互性,而后来的受支持版本使用.NET 4.5版本。
如果我使用4.0版或4.5版进行编译,则我的核心软件可以工作,但是当它在父级中运行时,如果我具有4.5版,则它会在较早的版本中破坏,如果我安装了4.0版,则在较新的版本中会破坏。 ..
有没有一种方法可以创建两个可以在不同dll文件上编译的不同版本?我猜我将需要根据我想要的位置来设置两个不同的安装位置?
答案 0 :(得分:2)
这将满足您的要求:
1)为每个配置添加新配置(通常在“调试”和“发布”之间进行选择)。
在我的示例中,我将使用 TheNet40one 和 TheNet45One 。
2)编辑项目的.csproj文件并添加以下内容(我将演示AnyCPU):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TheNet40One|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\TheNet40One\</OutputPath>
...
</PropertyGroup>
3)然后添加条件引用(显然,我猜您的.dll名称是这样):
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
...
<Reference Include="40.dll" Condition="'$(Configuration)'=='TheNet40One'" />
<Reference Include="45.dll" Condition="'$(Configuration)'=='TheNet45One'" />
</ItemGroup>
我已经使用 ... 替换其他常用设置和参考-不要忘记替换它们。
现在,您可以在两个构建配置之间切换,知道它们每个都将链接到正确的DLL文件中。