Nuget 预生成事件中的包管理器控制台命令

Nuget 预生成事件中的包管理器控制台命令,nuget,nuget-package,Nuget,Nuget Package,本周早些时候,我发布了一个关于如何有效管理的问题。NuGet是作为一个解决方案提供的,过了一段时间我就能够实现一个解决方案了,但我有一个问题目前阻碍我完成它 目前,我有两个web应用程序项目: Project.Common.Presentations 项目.网站.演示文稿 每次构建Project.Common.Presentations项目时,都会创建一个具有更高版本的新NuGet包。此软件包用于我的主要web项目project.Website.Presentations。最初,我通过GUI将p

本周早些时候,我发布了一个关于如何有效管理的问题。NuGet是作为一个解决方案提供的,过了一段时间我就能够实现一个解决方案了,但我有一个问题目前阻碍我完成它

目前,我有两个web应用程序项目:

  • Project.Common.Presentations
  • 项目.网站.演示文稿
  • 每次构建
    Project.Common.Presentations
    项目时,都会创建一个具有更高版本的新NuGet包。此软件包用于我的主要web项目
    project.Website.Presentations
    。最初,我通过GUI将project.common.NuGet包添加到此项目中。紧接着,我设置了一个预构建eveny,在那里我从命令行执行NuGet更新,以获取最新版本的
    Project.Common.Presentations

    但不知何故,在命令行中使用NuGet update会使用实际不在磁盘上的位置添加对我的项目的引用,从而导致以下问题:

    无法解析此引用。找不到程序集“Project.Common.Presentations”。检查以确保磁盘上存在程序集。如果代码需要此引用,则可能会出现编译错误

    这是我如何设置结构的:

    • 我使用
      .csproj
      文件为我的
      Project.Common.Presentations
      项目生成了一个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包时,这个问题不会发生,一切正常


    删除预构建事件并手动更新包可以正常工作。但是每次构建时都必须手动执行某些操作,这不是我喜欢的事情。使用软件包管理器控制台卸载和安装软件包也可以正常工作。有没有办法将PackageManager控制台操作合并到预构建事件中?提前感谢您提供的信息。

    使用NuGet进行类似操作的基本思想是在解决方案中的所有项目之间共享相对静态(很少更改)的工件。我个人使用NuGet还包括一个公共母版页——我的所有文件都放在NuGet内容文件夹中

    我所有的常用功能都放在库项目中,这样就不需要任何类型的构建脚本


    Ref:

    如果您发布了对您不起作用的预构建命令,这将很有帮助。有哪些公共功能需要共享,而不能放在库项目中?@IrischChieftain:从长远来看,我希望在不同的web项目中创建功能性应用程序组件,因此我希望打包整个web项目(母版页、aspx页、脚本等)并将所有内容整合到主web应用程序中。我认为这可以通过使用NuGet和library项目的组合来实现,而不必依赖构建脚本;请参阅我的答案。@JimCounts我更新了我的帖子,提供了有关设置的更多详细信息。当只需共享一个不经常更改的母版页时,我会选择该方法ach也是。但如果我有一个项目,有大约10个经常变化的aspx页面,我如何在项目之间共享这些页面?NuGet仍然是一个有效的选项,还是另一种方法更有效?因为iam计划这个项目,目前还没有实际的页面。在我当前的所有项目中,我将所有“正常”的东西都放在我的aspx文件中(html模板代码和控件引用等)。我将所有的C#代码都保存在代码中。我看不到需要跨Web项目共享页面的情况-常见页面的部分可以放在母版页中?您还可以选择用户控件。如果您想将应用程序拆分为逻辑组件,这些组件很可能有自己的aspx页面。tryi之后ng不同的方法我必须同意,NuGet是迄今为止处理不定期更改的内容的最佳方法。然而,当仍处于活动开发阶段时,我更喜欢添加引用并使用构建后事件复制任何未编译的文件(前端代码、aspx页面前端、母版页前端)@IrishChieftain谢谢你为我的两个问题提供的帮助,非常感谢。