gpt4 book ai didi

nuget - 预构建事件中的包管理器控制台命令

转载 作者:行者123 更新时间:2023-12-04 21:21:49 25 4
gpt4 key购买 nike

本周早些时候,我发布了一个关于如何有效的问题 share files amongst multiple web applications within a solution . NuGet 是作为解决方案提供的,一段时间后我能够实现解决方案,但我有一个问题目前阻止我完成它。

此时我有两个 Web 应用程序项目:

  • Project.Common.Presentations
  • Project.Website.Presentations

  • 每次 Project.Common.Presentations项目构建时,会创建一个新的更高版本的 NuGet 包。这个包用于我的主要 web 项目 Project.Website.Presentations .最初,我通过 GUI 将 project.common.presentations NuGet 包添加到该项目。在那之后,我设置了一个预构建事件,我从命令行执行 NuGet 更新以获取最新版本的 Project.Common.Presentations包裹。

    但是不知何故在命令行中使用 NuGet 更新添加了对我的项目的引用,使用了一个实际上不在磁盘上的位置,从而导致了这个问题:

    Could not resolve this reference. Could not locate the assembly "Project.Common.Presentations". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.



    这是我设置结构的方式:
  • 我为我的 Project.Common.Presentations 生成了一个 NuSpec 文件项目使用 .csproj文件。
  • 作为我 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 包时,不会出现此问题,一切正常。

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

    最佳答案

    将 NuGet 用于此类事情的基本思想是在解决方案中的所有项目之间共享相对静态(很少更改)的工件。我个人使用 NuGet 还包含一个通用母版页 - 我的所有文件都放在 NuGet Content 文件夹中。

    我所有的常用功能都在库项目中,这消除了对任何类型的构建脚本的需要。

    引用:Multiple web applications projects within a visual studio solution

    关于nuget - 预构建事件中的包管理器控制台命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10861130/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com