Visual Studio:添加项目/添加为链接而不仅仅是添加

我是视觉工作室的新手,来自delphi。

我有一个目录树,里面装满了.cs文件(root是\ Common)。
我还有一个完整的应用程序目录树(root是\ Applications)
最后,我有一个装满Assemblies的树(root是\ Assemblies)

我想将.cs文件保存在Common树和所有环境voodoo(解决方案,项目,设置,元数据,调试数据,bin等)中。 所以,举一个简单的例子,我有一个名为PdMagic.Common.Math.dll的程序集。 解决方案和项目位于\ Assemblies \ Common \ Math中。 它的所有源(.cs)文件都在\ Common \ Math中。 (matrix.cs,trig.cs,mathtypes.cs,mathfuncs.cs,stats.cs等)

当我使用Add Existing Item将matrix.cs添加到我的项目时,它的副本将添加到\ Assemblies \ Common \ Math文件夹中。 我只是想参考一下。 我不希望有多个副本。 我已尝试添加现有项目,并使用下拉菜单“添加链接”而不是“添加”,这似乎做我想要的。

问题:这种事情的“最佳实践”是什么? 大多数人只是将这些.cs文件放在与项目相同的文件夹中吗? 为什么“添加链接”不是默认值?

谢谢!

在这种情况下,“最佳实践”是不打击工具。 它允许您执行您想要的操作,但如果您让IDE为您组织项目,您将完成更多工作并能够专注于代码。

我会创建一个名为PdMagic.Common的空解决方案项目

这将为您提供类似的文件结构

PdMagic.Common\ PdMagic.Common\PdMagic.Common.sln 

然后我一般添加一个src和libs文件夹(通过文件系统,而不是VS)

在libs文件夹中,我会放置所有第三方依赖项,src文件夹将保存我的所有项目

 PdMagic.Common\ PdMagic.Common\PdMagic.Common.sln PdMagic.Common\libs PdMagic.Common\libs\nunit PdMagic.Common\src 

接下来,在Visual Studio中,我会右键单击刚刚创建的解决方案,然后单击“添加 – >新建项目”,我将指定我希望它在\ src文件夹中创建并将其命名为PdMagic.Common.Math

现在我的文件夹结构看起来像这样

 PdMagic.Common\ PdMagic.Common\PdMagic.Common.sln PdMagic.Common\libs PdMagic.Common\libs\nunit PdMagic.Common\src PdMagic.Common\src\PdMagic.Common.Math PdMagic.Common\src\PdMagic.Common.Math\PdMagic.Common.Math.csproj PdMagic.Common\src\PdMagic.Common.Math\Class1.cs 

然后,当您向PdMagic.Common.Math项目添加类时,它们将进入包含项目文件的文件夹。 这就是IDE我们应该如何工作的意见,我认为大多数开发人员都会使用它,因为尝试在文件系统上获得任何其他布局需要与IDE进行过多的斗争。 我知道很难从一个不同的惯例来看,你本能地希望在新环境中使用相同的约定。 但是,如果您坚持使用约定(在您看来是对或错),您将完成更多工作,因为您不会试图强制IDE以您认为应该完成的方式执行操作。

您可以通过单击Add – > Existing Item命令中添加按钮右侧的小向下箭头来使用Add As Link

(谢谢彼得)

虽然我意识到这不是对原始问题(关于最佳实践)的回答,但我提出这个答案是为了节省被这个问题的误导性标题引导到这里的其他人的时间。

我认为“最佳实践”是将这些“常见”例程放入可以引用的程序集中,而不是将源文件拉入一堆不同的项目中。 您可以将其添加为带有“添加引用…”的预构建程序集,或者通过包含该程序集的项目并添加对项目的引用(也在“添加引用…”对话框中完成)。

这是最初设置(可能是)的一些工作,但从长远来看,它通常会得到回报。

如果要在项目中“引用”matrix.cs,请不要使用“添加现有项”,为类库或“matrix.cs所属的对象”创建引用(“添加引用”)。 如果你不想(或不能使用)matrix.cs所属的库或对象,那么添加链接就是你将如何实现它,但严重的是我从未使用过那个特定的function。

我在.NET中使用过的开发人员都没有将他们的.cs文件隔离在单独的文件夹中。 像我所看到的唯一一种隔离是MVC,其中模型,视图和控制器都在他们自己的文件夹中。

因为你想在项目中引用matrix.cs,所以不要只使用AddExistigItem,为类创建一个新的引用。

VS有一些有用的扩展:

http://vscommands.com

和ProjectsLinker: http : //visualstudiogallery.msdn.microsoft.com/5e730577-d11c-4f2e-8e2b-cbb87f76c044?SRC=VSIDE

和SourceShare: http ://visualstudiogallery.msdn.microsoft.com/aa5d54dd-0b05-4689-ad2f-634e86de327f?SRC = VSIDE