我正在为Visual Studio创建一个使用以下引用程序集的小型外部工具:
Microsoft.TeamFoundation.VersionControl.Client
我的工具内置于Visual Studio 2012
,因此它使用相同版本11.0.0.0
的引用。当我尝试在Visual Studio 2013
中运行相同的工具时,文件丢失,因为VS2013中的版本已更改:12.0.0.0
。
请注意,只有在计算机上安装Visual Studio 2013时才会发生这种情况。
我现在要做的是让我的程序使用机器上可用的版本。因此,如果找到版本12.0.0.0,请使用它;如果找到11.0.0.0,请使用它。
经过一些研究后,我遇到了this link,其中说了以下内容:
要成功部署.NET Framework应用程序,您必须了解公共语言运行库如何定位和绑定到组成应用程序的程序集。默认情况下,运行时尝试使用构建应用程序的程序集的确切版本进行绑定。 配置文件设置可以覆盖此默认行为。
这可以通过使用dynamic reference
来实现,如同topic中所述。
虽然有关于如何动态加载引用的信息,但我不确定如何处理它。
基于此,我有一些问题:
编辑:无法使用选项3,因为Visual Studio会抱怨对已存在的该组件的引用。
编辑2 :如果我按如下方式添加参考:
<Reference Include="Microsoft.TeamFoundation.VersionControl.Client" />
不使用版本,文化等;我收到一个编译错误,说明同一个依赖程序集的不同版本之间存在冲突。
编辑3:将referenceversion设置为非特定也不起作用,因为这是构建设置而不是运行时设置。