Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 在命令行上将msbuild属性传递给devenv.exe_Visual Studio_Command Line_Msbuild_Continuous Integration - Fatal编程技术网

Visual studio 在命令行上将msbuild属性传递给devenv.exe

Visual studio 在命令行上将msbuild属性传递给devenv.exe,visual-studio,command-line,msbuild,continuous-integration,Visual Studio,Command Line,Msbuild,Continuous Integration,我正在使用我们的CI服务器上的devenv.exe自动构建一个解决方案,效果非常好。出于部署目的,我添加了一个nuget包(即OctoPack)。它的文档告诉我在构建时将属性传递给MSBuild,但由于我使用的是devenv,这是不可能的 通过研究,我了解到我可以在项目的.csproj中添加属性组,以添加这些属性。我不希望这样做,因为我需要替换这些属性中的某些值(如版本号),所以我不希望在这些字符串中放置占位符。此外,我需要能够使这些PropertyGroup仅在CI服务器上构建时处于活动状态,

我正在使用我们的CI服务器上的
devenv.exe
自动构建一个解决方案,效果非常好。出于部署目的,我添加了一个nuget包(即OctoPack)。它的文档告诉我在构建时将属性传递给MSBuild,但由于我使用的是devenv,这是不可能的

通过研究,我了解到我可以在项目的
.csproj
中添加属性组,以添加这些属性。我不希望这样做,因为我需要替换这些属性中的某些值(如版本号),所以我不希望在这些字符串中放置占位符。此外,我需要能够使这些PropertyGroup仅在CI服务器上构建时处于活动状态,而不是在本地开发和构建时处于活动状态

这最终导致了我的问题:我是否可以通过某种方式将这些属性(通常通过
/p:
)传递给命令行上的devenv?

(我发布了一个答案,以便解决这个问题)

  • 我建议不要在CI服务器上使用devenv.exe

  • 开始使用msbuild.exe

  • 使用

  • /属性:name=value/p:name=value

  • 使用nuget.exe restore MySolution.sln还原包

  • 没有记录在案的方法可以做到这一点,可能是因为有更好的替代方法:直接调用msbuild来生成解决方案—您的CI服务器应该能够做到这一点—并根据需要传递属性。如果您必须使用devenv,另一种选择是将这些属性设置为环境变量,但我确实建议您不要这样做。devenv包装了MsBuild并添加了许多特定于VS的属性,我不确定您为什么要使用devenv.exe而不是MsBuild.exe根据stackoverflow上的一系列文章,devenv是一种更快的方法,自动恢复包,等等@colewu不知道你从哪里得到的,但我认为这是误导性的信息。如果启动一个使用msbuild的IDE比直接使用msbuild要快,那就很奇怪了。另外,多年来我一直在使用带有自动包还原的msbuild,这应该没有任何问题,请参见例如不要使用devenv.exe。使用Msbuild.exe。现在已经不是2003年了,这个答案不应该被接受。MSBuild功能与devenv功能的1对1不匹配;是的,它们重叠,但是devenv可以构建SSI和SSRS项目,而MSBuild不能。这里提供的答案对于大多数情况都是一种变通方法,这很好,但它并不是当前问题的真正解决方案(如问题标题所述,将MSBuild属性传递给devenv)。在找到不应使用MSBuild的具体原因之前,应该使用MSBuild。(IMHO)。是的,我发现了一些不得不使用devenv.exe的案例。(可能有一个温和的回答在某处飘荡)。正如Marv所建议的,请随意添加一个新的答案来记录您的担忧。事实上,我正在采取一种不同的方法。在我看来,我们应该能够使用MSBuild构建各种类型的项目,并且永远不必依赖完整的IDE来构建项目。我认为这是这里的中心问题。这就是我为VS团队打开此功能请求的原因:。如果您认为MSBuild应该支持SSxS项目,请登录并投票。至于答案,我将编辑这篇文章,并补充说,严格来说,不可能实现问题标题所述的目标。是的,msbuild应该能够完成devenv所做的一切。(我将去投票)同时,发布问题的人对这个答案感到满意……并且他/她没有提到SSI和SSR,因此我拒绝你建议的编辑。您已经表明了您的观点“SSI和SSR在msbuild方面是不同的”。但这个答案不应该因为一些附带案例而被抛弃。我投了更高的票。是的……他们肯定应该在msbuild中支持这些。