我正在寻找一个预建的解决方案,理想的是如何在本地托管“模块”的回购,我可以通过各种配置添加和删除我的visual studio项目。我正在使用MVC,并希望添加视图/控制器等,而不仅仅是引用像nuget似乎擅长的dll。预先建立的系统的任何方向或如何做的想法将不胜感激。
答案 0 :(得分:0)
第1步
将您的模块项目分组到一个解决方案中
示例 -
Module1.sln包含project1,project2,project3
Module2.sln包含projectA,projectB,projectC
等
第2步
创建一个新的解决方案WebApp1.sln
然后,您可以使用“添加现有功能https://blogs.msdn.microsoft.com/habibh/2009/06/25/walkthrough-adding-an-existing-visual-studio-solution-to-another-solution/”将Module1和/或Module2添加到解决方案中
因此,将Module1.sln添加到WebApp1.sln 将所有项目引用添加到WebApp1.sln中。这意味着它现在有project1,project2和project3
问题是对Module1.sln的任何更新都不会更新WebApp1。因此,如果您使用此方法,您将无法使用模块解决方案的单个定义,任何更新都必须在使用模块添加项目引用的任何项目中手动复制。
答案 1 :(得分:0)
简短回答:使用 NuGet 和 ProGet
NuGet 支持支持内容以及DLL。您需要将所有内容文件嵌套到特殊内容文件夹中。如果您正在寻找示例,可以使用NuGet Package Explorer并查看NLog.config的包。此包没有编译内容。同样在NuGet中使用.pp文件将允许source code transformations,因为这些文件包含在项目中,所以你可以使命名空间正确。
仅仅是一个快速的FYI,NuGet包只是.zip具有不同的扩展名,所以你也可以使用你最喜欢的拉链工具来探索它们,例如7-Zip。
结构看起来像
NuGet.Solution
- NuGet.Project
----内容
-----意见
------ YourView
-----控制器
------你的控制器
因此,在进行NuGet设置后,您可以利用ProGet之类的东西私下托管您的软件包。还有很多其他解决方案,我亲自设置了ProGet,基本版本是免费的,非常容易设置。
你可以通过一些NuGet扩展来削减它,并且从你的解决方案到服务器的部署非常简单。
我们正在使用与此类似的设置,唯一的区别是我们还使用TeamCity来构建和部署或打包。注意:如果您已经在使用TeamCity,TeamCity确实拥有自己的内部NuGet服务器,您可以使用该功能。我们一开始没有TeamCity,所以我们已经安装了ProGet。
添加此部分是因为您以编程方式""在你的问题。如果您想使用代码执行此操作,可以使用EnvDTE库。这个lib就是为了这个而做的。这个SO answer是一个很好的起点。我不打算深入研究这个选项,因为你提到了与NuGet具有相同的功能,所以最好的方法就是使用NuGet