如何在一个项目中包含另一个项目的源文件?

7
我正在用C#/.NET写一个类库。
我需要为两个不同的框架编译它:
4.0(用于自己调试)
3.5(用于客户端)
我希望有一套源文件适用于这两个项目,这样我就可以在一个文件副本中进行更正,并使它们自动包含到另一个项目中。
现在,即使我使用“添加现有项”,VS 2010也会创建副本。每次都需要复制最新版本。
我不能仅简单地更改项目中的目标,因为我正在使用不同版本的.dll引用,并且由于MS VS存在某些怪癖。
3个回答

10
您可以使用“添加链接”功能。
步骤如下:
  • 在需要您(已有的)文件的位置上右键单击
  • "添加" -> "现有项"
  • 选择您的文件,然后单击“添加”按钮上的箭头并选择“添加为链接”(请参见下面的屏幕截图)
  • 项目中将添加一个指向该文件的链接,而不是副本

屏幕截图


9
一种选择是使用其他人已经提到的 添加为链接 选项,但你还有更多选择:
  1. 便携式类库 是一种特殊的项目,允许你指定要针对哪些版本的 .NET 进行目标设置。编译器会为你输出相应的程序集。这种技术的优点是你只需编写一份源代码即可编译出适用于两个框架的程序集。缺点是无法使用最低公共分母 .NET 框架不支持的功能。
  2. 源代码控制分支和合并使你能够实际上维护两个类似但不同的源文件。你拥有一个版本作为主版本,然后在对其应用更改后,将其合并到产生实际输出的项目中。这种技术的优点是你可以拥有两个完全独立的文件,因此你有很大的自由度。缺点是你有两个完全独立的文件,可能难以管理。
  3. 做得更好的 MsBuild 技巧。使用 <choose>/<when> 结构,你可以根据条件有条件地包含对特定程序集版本的引用。目标框架版本和其他高级设置也可以通过 MsBuild 进行管理,但并不总是能够通过 UI 进行编辑。你可以将此与 #if MY_CONSTANT 结合使用,创建有条件编译的应用程序部分。
  4. 你可以创建一个 .NET 程序集,并从两个项目中都引用它。你将 .NET 版本设置为最低版本,在这种情况下为 3.5。Visual Studio 2010 及更高版本具有多重目标支持,因此可以混合和匹配一个解决方案中的 .NET 框架版本。

如果你遇到了什么问题,请分享(部分)项目文件,我们可能能够为你解决这些问题。


4
在项目中添加文件时,请选择“添加链接”而不是仅添加文件。

Add as link


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接