msbuild - 蜡 Nuget 包
问题描述
所以这是场景:我有几个 wix 项目,它们具有完全相同的额外 msbuild 目标和任务来自动化一些非常繁琐的任务:比如构建帮助文件和使用 signtool.exe 对 msi 和输出文件进行身份验证。
每次我进行修复时,我都厌倦了将这些脚本的更改复制到 5 个不同的存储库中。所以我很聪明,我把它们变成了 nuget 包,在 build 文件夹中有一个 .targets 文件。一个简单的 nuget 还原将一揽子软件包转换为目标文件。
问题 Wix v3 不喜欢软件包。它不支持包引用,所以 packages.config 看起来很像。除了 Visual Studio 不喜欢 packages.config 之外。它会很高兴地恢复包(到我用 nuget.config 指定的文件夹中),但不会自动导入任何 .targets 文件。
很容易修复:我刚刚在我的 wixproj 文件中添加了一个导入语句。除了 Visual Studio 在运行还原操作后不会自动重新评估 wixproj 之外。我们可以解决这个问题,但是在包更改时必须构建、卸载项目、重新加载项目和重新构建真的很烦人。
所以我尝试修复它,
我爬取了标准 C# 项目构建的日志输出并发现了 Nuget.Targets 文件,该文件可以导入到项目中以提供pack
和restore
定位。它还让我可以转换为 packagereferences,它比 packages.config 更方便且不那么混乱,但我仍然必须手动为 nuget.g.targets 和 nuget.g.props 文件添加导入语句restore
目标。
而且,由于我必须手动导入这些文件,我马上回到构建、卸载、重新加载、重建工作流程。
第 2 次尝试
我通过大量的互联网搜索发现 msbuild 最近/restore
在他们的命令行实用程序中添加了一个标志,专门用于在恢复包后强制重新评估项目。这适用于命令行,但视觉工作室似乎一无所知。(可能是因为 wix v3 在 Visual Studio 模板中的幕后操作?)无论如何,他们在问题说明中提到,他们实际上是在使用具有新全局属性的 msbuild 任务来强制重新评估。所以我试图在我的wixproj的预构建事件中添加这样一个步骤,但没有酱汁。
问题
我如何告诉 Visual Studio 在运行恢复后重新评估这个 wixproj?我需要将某种属性或项目组添加到 wixproj 吗?我可以在构建过程中插入某种目标吗?
更新1:
找到了一个看起来很有希望的项目属性:UseHostCompilerIfAvailable
,但它不起作用。仍然遇到同样的问题。
解决方案
推荐阅读
- laravel - Automatic status on 2 models
- vue.js - 带有对象/对象数组的 Vuex 表单处理
- post - 每秒发送 php GET 请求来馈送聊天系统是不是很糟糕
- javascript - Echarts:如何根据数据设置不同的线重?
- c# - 在 PCL 项目中使用 Firebase 消息传递变量
- php - 为什么我的表单(收音机)在 laravel 集体中默认检查最后一个元素
- python - 将geojson 图层添加到folium 地图会产生空白输出(仅我使用的geojson 文件会导致此结果)
- c# - 使用 SHA1 的 OAEP 和使用 BouncyCastle 的 MGF1?
- r - 使用R找到所有可能的3个数字组合,其中总和小于给定数字
- swift - 无法解析可编码的数据。我能够获取数据,但是一旦我使用解码功能,我就会出错