2016-03-29 58 views
0

我正在寻找一个预构建解决方案,理想的是如何在本地托管“模块”的回购,我可以通过各种配置从我的Visual Studio项目中添加和删除回购。我与MVC合作,并希望添加在视图/控制器等,而不仅仅是引用像nuget DLL似乎擅长。预制系统的任何方向或如何做到这一点的想法,将不胜感激。以编程方式添加cs文件和文件夹

回答

0

简短的回答:使用的NuGetProGet

的NuGet 确实支持内容以及DLL的。您需要将所有内容文件嵌套到特殊的内容文件夹中。如果您正在寻找一个示例,您可以使用NuGet Package Explorer并查看NLog.config的包装。该软件包没有编译内容。同样在NuGet中使用.pp文件将允许source code transformations,在这些文件包含到项目中时,可以使命名空间更正确。

只是一个快速仅供参考,包的NuGet只是.zip文件扩展名不同的,所以你也可以使用他们自己喜欢的zip工具,如7-Zip探索。

的结构将类似于

NuGet.Solution
- NuGet.Project
----内容
-----查看
------ YourView
-----控制器
------控制器

你有你的NuGet设置,以便以后您可以利用事端像ProGet私人托管你的软件包。还有很多其他的解决方案,我亲自设置ProGet,基本版本是免费的,并且非常容易设置。

你可以用一些NuGet扩展来减少这些扩展,并且从你的解决方案到你的服务器有一个非常简单的部署。

我们正在使用类似于此的设置,唯一不同的是我们也使用TeamCity来构建和部署包。注意:如果您已经在使用TeamCity,您可以使用该功能,TeamCity确实有自己的内部NuGet服务器。我们在开始时没有TeamCity,因此我们已经使用ProGet进行了设置。


添加这部分,因为你确实在你的问题中说“编程”。如果你想用代码来做到这一点,你可以利用EnvDTE库。这个库就是为了这个。这SO answer是一个很好的起点。我不打算深入讨论这个选项,因为你提到与NuGet具有相同的功能,所以最好的方式就是使用NuGet

+0

好,所以这是一个很好的例子和路径,即时通讯。但是,如果您创建一个空的mvc 6项目并安装nlog,则不会有文件出现,只有一个参考。 http://i.imgur.com/P9txyLT.png – poptarts

+0

nlog.config not nlog('PM> Install-Package NLog.Config') – workabyte

+0

对不起,我错过了。我确实通过控制台 – poptarts

0

步骤1
将您的模块项目分组到一个解决方案中。
示例 -
Module1.sln包含PROJECT1,项目2,项目3
Module2.sln包含了projectA,项目B,项目C


步骤2
创建一个新的解决方案WebApp1.sln
那么你可以添加Module1和/或Module2使用添加现有功能https://blogs.msdn.microsoft.com/habibh/2009/06/25/walkthrough-adding-an-existing-visual-studio-solution-to-another-solution/
因此,将Module1.sln添加到WebApp1.sln 拷贝将所有项目参考文件复制到WebApp1.sln中。现在意味着它有project1,project2和project3。

问题是,对Module1.sln的任何更新都不会更新WebApp1。所以如果你使用这种方法,你只能使用模块解决方案的单一定义,任何更新都必须手动复制到使用模块添加项目引用的任何项目中。

+0

正确的下载和获取最新版本的能力对于这个系统是至关重要的。当编辑项目json或新的项目版本可用时,nuget包恢复如何工作。我们的模块也很大程度上依赖于部分分类,所以单独的项目也很难受。 – poptarts

+0

那是一个艰难的。我遇到过这个问题几次。如果我有时间编写自定义解决方案,我会坚持使用相同的步骤1,但步骤2将是一个清单文件,其中列出了Web应用程序解决方案的模块解决方案。然后是一个powershell脚本,它可以查看清单并检查每个引用的模块解决方案,并将任何缺少的项目引用添加到WebApp解决方案。容易说,然后做对了吗? – robaudas

相关问题