Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio:添加项/添加为链接,而不仅仅是添加_C#_Visual Studio - Fatal编程技术网

C# Visual Studio:添加项/添加为链接,而不仅仅是添加

C# Visual Studio:添加项/添加为链接,而不仅仅是添加,c#,visual-studio,C#,Visual Studio,我是visual studio的新手,来自Delphi 我有一个满是.cs文件的目录树(根目录是\Common)。 我还有一个充满应用程序的目录树(根是\应用程序) 最后,我得到了一个充满程序集的树(根是\程序集) 我希望将我的.cs文件保存在公共树中,将所有环境voodoo(解决方案、项目、设置、元数据、调试数据、bin等)保存在组件树中。举个简单的例子,我有一个名为PdMagic.Common.Math.dll的程序集。解决方案和项目位于\Assemblies\Common\Math中。其所

我是visual studio的新手,来自Delphi

我有一个满是.cs文件的目录树(根目录是\Common)。
我还有一个充满应用程序的目录树(根是\应用程序)
最后,我得到了一个充满程序集的树(根是\程序集)

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

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

问:这类事情的“最佳实践”是什么?大多数人只是把那些.cs文件和项目放在同一个文件夹中吗?为什么“添加链接”不是默认设置


谢谢

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

这似乎是一项需要进行初步设置的工作(可能是),但从长远来看,它通常是值得的。

如果您想在项目中“引用”matrix.cs,请不要使用“添加现有项”,而是为matrix.cs所属的类库或对象创建一个引用(“添加引用”)。如果您不想要(或不能使用)matrix.cs所属的库或对象,那么添加链接就是您访问它的方式,但说真的,我从未使用过该特定功能

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

在这种情况下,“最佳实践”是不要与工具对抗。它允许你做你想做的事情,但是如果你让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按照您认为应该做的方式来做事情。

VS为此提供了一些有用的扩展:


和项目链接:

和源共享:

因为您想在项目中引用matrix.cs,而不仅仅是使用AddExistigItem,为类创建一个新的引用

您只需从添加-->现有项命令中单击添加按钮右侧的小向下箭头,即可使用添加为链接


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

在Visual Studio 2019中,它是:

  • 右键单击项目
  • 现有项目
  • 选择文件
  • 展开“添加”旁边的菜单
  • 添加为链接

  • @MichaelBurr:你赢了我!我想,键盘速度更快。我认为他希望以VS认为应该的方式组织他的项目和文件,因此他正在与IDE进行斗争,以使事情按照他想要的方式进行,而不是按照MS所说的方式进行。我不认为他试图重用其他程序集中已有的代码。@NerdFury:我知道.cs文件目前不在程序集中;然而,我认为将它们打包成一个程序集(或几个)以供多个项目使用可能是一个好主意。这很可能是被迫进入IDE的工作方式,但我认为这是对所提出问题的答案。从我阅读这个问题得到的结果来看,他似乎有这样一个场景:他正在努力工作。我认为他是在与IDE作斗争,试图保持这种结构会让事情变得更加困难。@NerdFury:哦,我明白了。是的,我认为你是对的,他必须继续与IDE抗争才能走这条路。这是可以做到的(以他现在的方式),但IDE显然不会让它变得容易。这正是我想要的答案。当你写它的时候,我自己做了一些实验,提出了一个(常见的)案例,我不确定它是否能处理。我的目标是b