我有一个充满C#代码的.cs
文件,我一直在多个项目中重复使用。
现在我通过将代码复制并粘贴到每个项目目录中的新文件中来将它包含在这些项目中。这是错误的做法。
什么是正确的方法呢?
正确的方法应该:
随机猜测,我期待像using mycode = C:\common\mycode.cs
那样的某种指令,但我确信这不是.NET的做事方式。
(我正在使用C#2010,.NET 4.0,并且只在一台计算机上本地编译此代码。)
创建类库,添加文件,构建项目,并引用从构建创建的DLL。将using语句添加到将引用它的每个文件。此外,如果它出错,并且DLL在项目中,您和右键单击对象 - >解析,它将为您添加使用。
将代码放入单独的类库项目中,并在其他项目中引用该项目。
要么,
您现在有两个项目引用的一个源文件,但它具有您在第一个项目中提供的名称空间,这可能并不理想。
最好的组织方式是,正如其他两个答案所建议的那样,将公共代码放在类库中,使其具有MyClassLibrary的名称空间而不是SomeOtherProject。它可以节省更大的dll被复制,这对你开发像Windows Phone这样的小东西来说并不重要。或者在所有应用程序中将公共代码的命名空间更改为Me.Common - 哪个是原始的并不重要,您可以从引用它的任何项目编辑它。
检查源控制不是问题。
我编写了一个应用程序,可以自动添加代码作为链接,方便重用大量代码和更改的项目。它在https://github.com/CADbloke/CodeLinker
要么
不要害怕编辑XML .csproj文件。例如,这有效......
<Compile Include="$(Codez)\z.Libraries\diff-match-patch\DiffMatchPatch\**\*.cs"
Exclude="NotThisOne.cs;**\NotThisFolderWith\This*.cs">
<Link>Libs\%(RecursiveDir)%(Filename)%(Extension)</Link>
</Compile>
...并将从源文件夹和子文件夹中将所有C#文件作为目标项目中的链接文件提供给您。
$(Codez)
是我在PC上使用的Windows环境变量。*.*
而不是*.cs
。