从多个项目中引用C#代码
我有一个.cs
文件,里面装满了C#代码,我一直在多个项目中重复使用。
现在我将它包含在这些项目中,方法是将代码复制并粘贴到每个项目目录中的新文件中。 这是错误的做法。
什么是正确的方法呢?
正确的方法应该:
- 将公共代码仅保存在计算机上的一个位置
- 并保持链接新鲜 – 所以当公共代码更改时,每个项目都知道它,下次我重新编译该项目。
随机猜测,我希望某种指令如using mycode = C:\common\mycode.cs
,但我确信这不是.NET的做事方式。
(我正在使用C#2010,.NET 4.0,并且只在一台计算机上本地编译此代码。)
创建类库,添加文件,构建项目,并引用从构建创建的DLL。 将using语句添加到将引用它的每个文件。 此外,如果它出错并且DLL在项目中你和右键单击对象 – >解析它将为你添加使用。
将代码放入单独的类库项目中,并在其他项目中引用该项目。
要么,
- 右键单击Solution explorer中的项目
- 选择添加现有项目
- 浏览到另一个项目中的.cs文件,然后单击以选择该文件
- 单击“ 添加 ”右侧的向下箭头按钮,然后选择“ 添加为链接”
您现在有一个由两个项目引用的源文件,但它具有您在第一个项目中提供的名称空间,这可能并不理想。
组织的最佳方式是,正如其他两个答案所建议的那样,将公共代码放在类库中,因此它具有MyClassLibrary的名称空间而不是SomeOtherProject。 它可以节省更大的dll被复制,这对于像Windows Phone这样的小型开发来说并不重要。 或者在所有应用程序中将公共代码的命名空间更改为Me.Common – 哪个是原始应用程序并不重要,您可以从引用它的任何项目编辑它。
检查源代码管理不是问题。
我编写了一个应用程序,可以自动添加代码作为链接,方便重用大量代码和更改的项目。 它位于https://github.com/CADbloke/CodeLinker
要么
不要害怕编辑XML .csproj文件。 例如,这有效……
Libs\%(RecursiveDir)%(Filename)%(Extension)
…并将从源文件夹和子文件夹中将所有C#文件作为目标项目中的链接文件提供给您。
-
$(Codez)
是我在PC上使用的Windows环境变量。 - 我也可以在最后使用
*.*
而不是*.cs
。 - 这是Visual Studio可能会破坏你的东西之一,将文件添加到充满通配符链接文件的文件夹中可能会将它们分解为单独的条目。 或不。 取决于风。