c# - 如何轻松切换构建的引用路径?

标签 c# .net visual-studio-2008 visual-studio-2010 msbuild

我有一个软件项目。所以我在我的项目中引用了该软件的 DLL 库,这样我就可以通过他们的 API 为该软件编写代码并制作一些不错的插件和扩展。

问题是该软件有多种版本:企业版、精简版、1.6 版、1.7 版、2.0 版等。如果我想让我的项目适用于所有这些不同的版本,我必须复制我的项目并将 DLL 引用重新指向相应软件版本的 DLL 库(我现在正在这样做)。这真的很烦人,因为我的代码库对于所有版本都是相同的,所以当我进行任何更新时,我必须同步所有重复的项目,这样我就有了针对每个软件版本的构建。

有没有一种方法可以让我拥有一个项目,但在构建之前,选择要构建的软件版本?我想我正在寻找一种简单的方法来更新我项目中 DLL 引用的路径。任何想法或提示将不胜感激。

(如果有帮助,我可以使用 Visual Studio 2008 或 2010 和 .NET 3.5 或 4.0)

最佳答案

我在直接处理项目文件方面的经验非常有限,但我很确定您可以为许多不同的设置添加条件。在您的情况下,您可以向 Reference 或关联的 ItemGroup 添加条件。

然后你可以这样做:

<ItemGroup>
  <Reference Include="System" />
  <Reference Include="System.Core" />
  <Reference Include="System.Data.Linq" />
  <Reference Include="System.Xml.Linq" />
  <Reference Include="MyLibrary" Condition=" '$(ProjectVersion)'=='4' ">
    <HintPath>..\..\..\..\..\..\..\Libv4\MyLibrary.dll</HintPath>
  </Reference>
  <Reference Include="MyLibrary" Condition=" '$(ProjectVersion)'=='5' ">
    <HintPath>..\..\..\..\..\..\..\Libv5\MyLibrary.dll</HintPath>
  </Reference>
  ...
</ItemGroup>

语法可能有误,但思路是对的。我相信这是可行的。

关于c# - 如何轻松切换构建的引用路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3782590/

相关文章:

c# - C#中的委托(delegate)和继承

c# - 如何通过 StartsWith 或包含搜索值查找列表中的第一个或最后一个字符串而不添加到另一个列表

asp.net - 从 VS2008 发布的等效 msbuild 命令

c# - 如何在表格布局中合并两个单元格

c# - 将数据表导出到 Excel

c# - 获取 IGrouping 的第一项

c++ - 在 Visual Studio 2008 Pro 和 Standard 版本中编译项目有区别吗?

c# - 带有 C++ 的图形用户界面?还是 C# 和 Java 的路要走?

C# 性能因内存而异

c# - 如何包含 System.Windows.Shapes?