当前位置: 首页 > 编程语言 > C#

VisualStudio:如何管理项目间共享的代码

时间:2023-04-11 02:58:43 C#

VisualStudio:如何管理项目间共享的代码这可能之前已经发布过,但我不确定要查找的搜索词!快速解释。我在几个项目之间共享代码。代码本身仍在进行中。问题是每当我需要更新这段代码时,我不想重复3次,这将是一场噩梦。有没有办法把它添加到项目中而不用将它复制到项目文件夹中?即我希望共享类链接到我的3个项目C:coderepositorysharedclass.csNOTeachprojectbinsharedclass.cs我是否必须将其创建为自己的库项目?如果编译器可以将其编译为“外部”代码,那就更好了。干杯。最好将公共部分提取到单独的项目存储库中,并将对该项目的引用添加到所有解决方案/依赖项目。否则,您可以将代码/文件/项目添加为链接。正如其他人所说,您只需在解决方案资源管理器中右键单击您的解决方案,选择添加>现有项目并浏览到公共项目.csproj文件,它将从其原始位置包含在解决方案中。但是,这有两个问题,这两个问题可能会或可能不会成为问题,具体取决于您的团队规模:1-每个解决方案中将包含公共项目,并具有解决方案文件的相对路径(IE:...CommonProjectCommon.项目)。这意味着所有开发人员必须具有相同的工作文件结构,否则他们在尝试打开主项目时会出错。2-在一个场景中,一个公共项目被多个项目(比如两个-A和B)引用,并且在项目A上工作的开发人员必须在公共项目中进行更改作为其任务的一部分。如果不实际检查项目B并编译它,该开发人员无法知道他们所做的更改是否会破坏项目B。随着越来越多的项目引用公共项目,发生这种情况的风险增加到无法控制的水平。同样,正如其他人所说,没有“正确”的方法来做到这一点,但我采用的方法如下:1-使用像CruiseControl这样的持续集成来管理项目的构建,并将公共项目作为一个服务器上的独立项目。2-在源代码管理下创建一个目录来保存构建的公共DLL。在构建机器上查看此目录,每当您构建公共项目时,它都会将输出DLL复制到DLL文件夹中,并将这些更改提交到源代码管理。3-在所有开发人员机器和构建服务器上使用环境变量来控制公共DLL文件夹的位置,并使用该变量而不是硬编码路径引用DLL。(IE:而不是C:\SourceMyCommonProjectDLLS\Common.dll使用$(MyCommonLocation)\Common.dll,变量“MyCommonLocation”设置为C:\Source\MyCommonProjectDLLS)4-对于任何引用公共DLL的项目,设置该项目的构建服务器CI触发器在公共DLL文件夹中查找。每当提交更改时,构建服务器应该构建所有使用的项目。如果您要对任何其他项目进行重大更改,这将立即通知您。唯一的缺点是,在这个模型中,消费项目在构建后就被迫对公共DLL进行更新。另一种方法是在构建时从源代码控制修订版本中对通用DLL进行版本控制,并将每个版本放在通用DLL文件夹下其自己的子目录中。所以你最终得到:通用DLL-1.0.0.1234-1.0.0.1235-1.0.0.1236等等。这样做的好处是每个项目都可以通过简单地引用新版本的代码来选择何时更新公共DLL。但是,它会双管齐下,因为这可能意味着某些项目的公共代码的旧版本将花费更长的时间,这可能会增加最终带来这些更改所涉及的工作。希望这可以帮助。是的。您可以从硬盘驱动器上的任何位置将项目添加到解决方案。所以将共享代码放在一个类库中,并将其添加到您的三个项目中。Microsoft一直在支持一个开源项目,该项目现在内置于VS中,称为NuGet,您可以将共享项目导出为nuget文件并在其他项目中使用它。它实际上会在构建时部署您在包中指定的所有文件。这就是.Net现在支持依赖项的方式。您会注意到,甚至像EF这样的东西也来自NuGet包。您甚至可以在MyGet.org等地方免费托管它。我用它,效果很好。http://nuget.org/我使用git子模块来实现这一点。为要在解决方案之间共享的每个模块(项目)创建新的git存储库。我通常还将此项目的单元测试包含在一个单独的项目中,但在同一个git存储库中。将子模块添加到将使用共享代码的解决方案的git存储库。添加子模块会创建指向外部存储库特定提交的链接。更新子模块中的代码后,您将能够将更新拉取到父解决方案,这与更新对子模块提交的引用基本相同。我发现使用像SourceTree这样的应用程序更容易可视化。添加子模块并拉取最新提交将在父解决方案文件夹中创建共享项目的副本。通过右键单击解决方案并选择“添加现有项目”,将项目导入到父VisualStudio解决方案中。通过右键单击项目并选择“添加引用”并在“解决方案”选项卡中找到共享项目,在将使用它的其他项目中添加对共享项目的引用。现在共享项目包含在解决方案中,您可以将更改推送到子模块,这些更改将自动合并到解决方案中。您还可以在引用该子模块的其他git存储库中看到更改。是的,将需要共享的代码放在一个单独的类库项目中,构建它并将从这个构建创建的DLL引用到其他项目中。以上就是C#学习教程:VisualStudio:Howtomanagecodesharesharedbetweenprojects的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: