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

我正在用C#/ .NET编写一个类库。

我需要为两个不同的框架编译它:

  • 4.0(用于自己调试)
  • 3.5(在客户端使用)。

我想为这两个项目设置一个源文件,因此我可以在1个文件副本中进行更正,并自动包含在另一个项目中。

现在,如果我甚至使用“添加现有项目”,VS 2010会创建副本; 我需要每次都复制最新版本。

我不能只改变项目中的目标,因为我使用的是不同版本的.dll引用,因为ms vs有一些怪癖。

一种选择是使用其他人提到的Add As Link选项,但您有更多选项:

  1. 可移植类库是一种特殊的项目,允许您指定要定位的.NET版本。 然后编译器为您输出相应的程序集。 这种技术的优点是你有一个版本的源代码可以编译到两个框架。 缺点是您不能使用最低公分母.NET框架不支持的function。
  2. 源代码控制分支和合并允许您实际维护2个相似但不同的源文件。 您有一个版本是主版本,然后在对其进行更改后,将其合并到生成实际输出的项目中。 这种技术的优点是你可以拥有两个完全独立的文件,因此你有很多自由。 缺点是您有两个完全独立的文件,这些文件很难管理。
  3. 做得更好的MsBuild技巧。 使用/构造,您可以根据条件有条件地包含对特定assembly版本的引用。 目标框架版本和其他花哨设置也可以通过MsBuild进行管理,但您无法始终通过UI编辑这些设置。 您可以将它与#if MY_CONSTANT结合使用,以创建应用程序的有条件编译部分
  4. 您可以创建从两个项目引用的.NET程序集。 您将.NET版本设置为最低版本,在您的情况下为3.5。 Visual Studio 2010及更高版本具有多目标支持,您可以在一个解决方案中混合和匹配.NET框架版本。

您遇到了什么样的问题,如果您共享(部分)项目文件,我们可能会为您解决这些问题。

您可以使用“ Add as Linkfunction。

它是这样的:

  • 右键单击您需要(现有)文件的位置
  • “添加” – >“现有项目”
  • 选择您的文件,然后单击“添加”按钮上的箭头,选择“添加为链接”(请参见下面的屏幕截图)
  • 该文件的链接将添加到项目而不是副本

截图

将文件添加到项目时选择“添加为链接”不仅仅是添加。

添加为链接