从 powershell 调用 vcvarsall.bat 后运行构建脚本

2023-12-24

我正在尝试运行 Visual Studio(开发人员 cmd 提示符)环境变量设置批处理文件,然后运行 ​​Powershell 脚本中的构建脚本,如下所示:

cmd /v:on/k "(""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" amd64_x86 && C:\buildscript.cmd --build-options)"

然而,由 vcvarsall.bat 建立的环境设置似乎不会保留用于构建脚本调用。即没有默认的编译器设置等。

Is the /v:on结合/kswitch 实际上没有利用相同的 cmd 会话并正确延迟环境变量扩展?也许方法是错误的......


问题是当你跑步时cmd.exe要运行批处理文件,变量在该实例中设置cmd.exe,但它们在该实例终止后消失。

要解决此问题,您可以使用本文中的 Invoke-CmdScript 函数:

Windows IT 专业人士:负责 PowerShell 中的环境变量 http://windowsitpro.com/powershell/take-charge-environment-variables-powershell

函数如下:

# Invokes a Cmd.exe shell script and updates the environment.
function Invoke-CmdScript {
  param(
    [String] $scriptName
  )
  $cmdLine = """$scriptName"" $args & set"
  & $Env:SystemRoot\system32\cmd.exe /c $cmdLine |
  select-string '^([^=]*)=(.*)$' | foreach-object {
    $varName = $_.Matches[0].Groups[1].Value
    $varValue = $_.Matches[0].Groups[2].Value
    set-item Env:$varName $varValue
  }
}

您可以将此函数添加到您的 PowerShell 配置文件中或将其用作脚本文件。

定义函数后,您可以运行命令:

Invoke-CmdScript "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64_x86
C:\buildscript.cmd --build-options

...或者任何你需要的东西。

本文还介绍了几个可让您轻松保存和恢复环境变量的函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 powershell 调用 vcvarsall.bat 后运行构建脚本 的相关文章

  • SOAP Web 服务:多台服务器,一个接口

    我有一个场景 需要任意数量的服务器来提供相同的 SOAP Web 服务 我想生成一组代理类 并能够为它们提供一个位置 以便在运行时将它们指向不同的服务器 不幸的是 看起来好像wsdl port节点 子节点wsdl service 要求对特定
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 如何在 Linux 上重新实现(或包装)系统调用函数?

    假设我想完全接管 open 系统调用 也许要包装实际的系统调用并执行一些日志记录 一种方法是使用 LD PRELOAD http scaryreasoner wordpress com 2007 11 17 using ld preload
  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 大量互斥体对性能的影响

    假设我有一个包含 1 000 000 个元素的数组 以及多个工作线程 每个线程都操作该数组中的数据 工作线程可能会使用新数据更新已填充的元素 但每个操作仅限于单个数组元素 并且独立于任何其他元素的值 使用单个互斥锁来保护整个数组显然会导致高
  • 使用 VSTS 通过 VSTS 包和旧式 csproj 构建解决方案

    我有一个解决方案 具有以下内容 带有旧式 csproj 的多个库 net461 带有新 csproj 的多个项目 net461 Net core 库和我们的应用程序 但目标是 net461 并引用旧样式的 csproj 项目 我使用 VST
  • 自己绘制的WPF自定义滑块

    这是我关于堆栈溢出的第一个问题 所以不要踢它 我在尝试创建 Mac 风格的滑块控件时遇到问题 我已经发现这个解决方案 http www codeproject com KB miscctrl MAC Slider aspx我已经在我的解决方
  • 使用任一默认捕获模式时,这是通过复制捕获还是 (*this) 通过引用捕获?是一样的吗?

    当我看到以下工作时我有点困惑 struct A void g void f g 但后来我发现this https stackoverflow com a 16323119 5825294答案非常详细地解释了它是如何工作的 本质上 它归结为t
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • 找不到满足版本限制的“com.google.code.findbugs:jsr305”版本

    当生成签名的 APK 进行发布时 我收到此错误消息 Cannot find a version of com google code findbugs jsr305 that satisfies the version constraint
  • MPI - 发送和接收列

    我需要从一个进程发送矩阵列并从另一个进程接收它 我尝试运行以下程序 但得到了一个奇怪的结果 至少我这么认为 仅复制矩阵的第一个元素 某些矩阵元素会发生意外变化 include
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的

随机推荐

  • 如何使用 LevelScheme 在 Mathematica 中创建子图?

    以 MATLAB 中生成的以下任意图形为例 基本想法是我有一个等高线图 我想在右侧的子图中展示从中选择的切片 mma中有相当于subplot的吗 我现在所做的工作是只绘制带有切片和箭头的等高线图以及分别的两个切片图 然后将它们放在乳胶中 不
  • AngularJS - 如何从控制器中的 ng-repeat 访问下一个项目

    我想在单击按钮时访问屏 幕上下一个项目的参数 我在 html 文件中使用 ng repeat li a href img src xxx jpg a li 我的控制器中的索引带有循环 scope itemNext function scop
  • 如何在 Jetpack Compose 中的路径上绘制文本?

    现在有没有办法使用 jetpack compose 在自定义路径上写入文本 这是我想要实现的目标的示例图像 We use nativeCanvas使用绘制文本Path在 Compose 中 就像我们通常在自定义视图中所做的那样 Ex Com
  • jQuery 没有为 Angular 2 定义

    我正在尝试使用 ng2 datetime 但是 当我按照说明安装 npm install save ng2 datetime 时 出现以下错误 我尝试运行以下 npm install 但它没有修复任何问题 npm install jquer
  • Emacs shell 脚本 - 如何将初始选项放入脚本中?

    受到堆栈溢出问题的启发Emacs 中惯用的文本批处理 https stackoverflow com questions 2879746 idomatic batch processing of text in emacs我尝试了一个 Em
  • 可以将父版本作为属性提供给子项吗?

    这是关于 Maven POM 的 如果我想让我的父版本也成为我的依赖项的版本 我必须设置一个属性 其值为 project parent version 当我的主 POM 的子级 其中有 project parent version 属性 因
  • 使用 Python/M2Crypto 进行 SAML 签名验证

    我正在尝试使用 M2Crypto 来验证从我的 django python 应用程序中的 SSO SAML 提供程序返回的 XML 响应中包含的签名 但我似乎无法让它工作 我的 XML 响应看起来有点像第二个示例here http www
  • 修改程序文本时ptrace POKETEXT如何工作?

    它是否绕过了跟踪进程的只读页面权限 还是需要临时更改权限才可写 如果是这种情况 权限更改对跟踪的进程可见吗 看着内核源代码 https git kernel org pub scm linux kernel git torvalds lin
  • 从单元测试项目启动并调用 WPF 应用程序上的方法

    我想启动一个 WPF 应用程序并调用 ViewModel 上的方法来控制该应用程序以进行集成测试 就像是 Test public void Test1 var application new MyApp application Initia
  • IIS 7.5 上的 Asp.net 4.0 中的会话超时

    我想将我的 Web 应用程序的超时设置为 12 小时 我已经在 web config 文件中进行了设置
  • 如何完全更改网址而不将页面重新加载到新网址?

    我已经解决了这里提出的许多关于更改网址而不重新加载的问题 虽然我尝试了几乎所有的方法 但我无法在不重新加载新页面的情况下完全更改页面的 url 包括其域名部分 我怎样才能做到这一点 这是不可能的 有充分的理由 您可以在这里获取更多相关信息
  • 为什么Perl的系统返回值不是我所期望的?

    让我首先解释一下我想要实现的目标 本质上有两个 Perl 脚本 一种是我所说的带有 UI 的主脚本 运行此脚本的用户将看到他可以从菜单调用的其他脚本的列表 该列表是通过自定义配置文件加载的 主脚本的目的是能够在将来根据需要添加其他脚本 而无
  • 我应该将费用/折扣列表合并到订单类别中还是将它们作为商品行

    我没有其他开发人员可以寻求建议或 你觉得怎么样 我在想this 所以 如果您有时间 请阅读并告诉我您的想法 显示比描述更容易 但该应用程序本质上就像一个销售点应用程序 由 3 个主要部分组成 商品 订单商品和订单 项目类是来自数据存储区的数
  • 使用行号更新 Oracle 表列

    我想用行号更新表列 中的每一行empid列应使用相关行号进行更新 我尝试了以下查询 UPDATE employee SET empid row number 但这是行不通的 任何想法 首先 这不是正确的语法row number 功能 因为你
  • sql server单行多列合并为一列

    我有这样的桌子 Reg No Student Name Subject1 Subject2 Subject3 Subject4 Total 101 Kevin 85 94 78 90 347 102 Andy 75 88 91 78 332
  • C# 中的分号

    为什么 C 中每行末尾都需要分号 为什么编译器不能知道每一行的结束位置 行终止符将使您能够将语句分成多行 另一方面 像 VB 这样的语言有一个行继续符 并且可能会引发分号的编译错误 我个人认为用分号终止语句比继续使用下划线要干净得多 最后
  • SilverStripe 3 - <%循环%>的选项

    是否有我可以添加到循环中的所有选项的列表 我不知道选项是否是正确的名称 我的意思是这些 有人可以告诉我这里可能发生的一切吗 它的正确名称是什么 你的问题有一个错误 是 or 看 您正在循环 DataObject 列表 well loop基本
  • 为什么比较 constexpr 函数的两个参数不是静态断言的常量条件?

    constexpr uint32 t BitPositionToMask int i int Size static assert i lt Size bit position out of range return 1 lt lt i 这
  • kubectl 端口转发失败

    我正在裸机 RHEL7 上运行 k8s 集群 我正在尝试运行 kubectl port forward 命令并收到错误 kubectl port forward p somepod 10000 8080 I0128 15 33 33 802
  • 从 powershell 调用 vcvarsall.bat 后运行构建脚本

    我正在尝试运行 Visual Studio 开发人员 cmd 提示符 环境变量设置批处理文件 然后运行 Powershell 脚本中的构建脚本 如下所示 cmd v on k C Program Files x86 Microsoft Vi