Osk*_*kar 5 nuget nuget-package
本周早些时候,我发布了一个关于如何在解决方案中的多个Web应用程序之间有效共享文件的问题.NuGet作为一种解决方案提供,经过一段时间我能够实现一个解决方案,但我有一个问题,目前阻止我完成它.
此时我有两个Web应用程序项目:
Project.Common.PresentationsProject.Website.Presentations每次Project.Common.Presentations构建项目时,都会创建一个具有更高版本的新NuGet包.这个包在我的主Web项目中使用Project.Website.Presentations.最初,我通过GUI将project.common.presentations NuGet包添加到该项目中.在那之后,我设置了一个预构建的eveny,我从命令行进行NuGet更新,以获取最新版本的Project.Common.Presentations软件包.
但是在命令行中以某种方式使用NuGet更新会使用实际上不在磁盘上的位置添加对我的项目的引用,从而导致此问题:
无法解析此引用.无法找到程序集"Project.Common.Presentations".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.
这就是我设置结构的方式:
Project.Common.Presentations使用该.csproj文件为我的项目生成了一个NuSpec 文件.Project.Common.Presentations,我使用:$(ProjectDir)nuget.exe pack -sym $(ProjectPath).每次构建项目时,这都会构建一个新的NuGet包.在执行此构建事件之前,我使用脚本删除旧的NuGet包.Project.Website.Presentations我使用的预构建事件:$(ProjectDir)NuGet.exe update $(ProjectDir)packages.config第一次重建全部运行,我的.csproj文件更新了我的包的dll引用,一切都很好.我第二次运行rebuild all时,.csproj文件会再次更新,但是它引用了一个包含较新版本软件包的不同文件夹,但该文件夹不在驱动器上.当我使用GUI"管理NuGet包"来更新NuGet包时,这个问题不会发生,一切正常.
删除预构建事件,并手动更新包工作正常.但是每次构建时都必须手动执行某些操作并不是我喜欢的.使用程序包管理器控制台卸载和安装程序包也可以正常工作.有没有办法将Package Manager Console操作合并到预构建事件中?提前感谢您的信息.
使用 NuGet 进行此类操作的基本思想是在解决方案中的所有项目之间共享相对静态(很少更改)的工件。我个人使用 NuGet 还包含一个通用母版页 - 我的所有文件都位于 NuGet Content 文件夹中。
我所有的常用功能都在库项目中,这消除了对任何类型的构建脚本的需要。
参考:Visual Studio 解决方案中的多个 Web 应用程序项目
| 归档时间: |
|
| 查看次数: |
3178 次 |
| 最近记录: |