每个构建引用不同的程序集版本?
Reference different assembly version per build?
我有一个程序主要是另一个程序的插件。我在单个项目中有我的核心逻辑,UI 等,也可以独立于父程序使用。然后我有一个 'connector' 块将我的程序连接到父程序,本质上是两者之间的通信器。我也支持多个版本的父软件。
问题来了。我的核心程序使用 System.Windows.Interactivity.dll。父程序似乎也使用这个,但早期支持的父程序版本使用.NET 4.0 版本的交互,后来支持的版本使用.NET 4.5 版本。
如果我使用 4.0 版本或 4.5 版本编译,我的核心软件可以工作,但是当它在父级中 运行 时,如果我有 4.5 版本,它会在早期版本中中断,如果我安装了 4.0它在更高版本中中断...
有没有一种方法可以创建两个不同的构建版本来编译不同的 dll 文件?我想我需要有两个不同的安装位置,具体取决于我想要的安装位置?
这会做你想做的事:
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>
我已经使用 ... 替换了其他常用设置和参考 - 不要忘记替换它们。
现在您可以在两种构建配置之间切换,知道它们各自 link 在正确的 DLL 文件中。
我有一个程序主要是另一个程序的插件。我在单个项目中有我的核心逻辑,UI 等,也可以独立于父程序使用。然后我有一个 'connector' 块将我的程序连接到父程序,本质上是两者之间的通信器。我也支持多个版本的父软件。
问题来了。我的核心程序使用 System.Windows.Interactivity.dll。父程序似乎也使用这个,但早期支持的父程序版本使用.NET 4.0 版本的交互,后来支持的版本使用.NET 4.5 版本。
如果我使用 4.0 版本或 4.5 版本编译,我的核心软件可以工作,但是当它在父级中 运行 时,如果我有 4.5 版本,它会在早期版本中中断,如果我安装了 4.0它在更高版本中中断...
有没有一种方法可以创建两个不同的构建版本来编译不同的 dll 文件?我想我需要有两个不同的安装位置,具体取决于我想要的安装位置?
这会做你想做的事:
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>
我已经使用 ... 替换了其他常用设置和参考 - 不要忘记替换它们。
现在您可以在两种构建配置之间切换,知道它们各自 link 在正确的 DLL 文件中。