【问题标题】:msbuild -p:outputdir=c:\mydir being ignoredmsbuild -p:outputdir=c:\mydir 被忽略
【发布时间】:2011-06-25 07:54:54
【问题描述】:

我正在使用以下命令行运行 msbuild:

msbuild mysolution.sln -p:outputdir=c:\mydir

当我运行它时,输出目录将被忽略,并使用 csproj 文件中指定的默认值。

这个工具的 MSDN 文档说我应该能够使用这个参数覆盖构建目录。我做错了什么?

【问题讨论】:

标签: msbuild


【解决方案1】:

请注意,OutputPath 优先于 OutDir。文档曾经对此有误,但我看到他们终于修复了它。

除此之外,很难准确说出问题所在,因为您没有显示作为参数传递的确切路径。我可以想象有两个可能的问题:

  1. OutputPath 选项指定输出目录的路径相对于项目目录。这意味着您不能将其设置为像C:\mydir 这样的全局路径。我假设它无法找到您指定的路径,因此它默认为您的项目文件中指定的路径。

  2. 如果您实际指定为参数的路径包含 空格,则该命令可能会失败。我相信您需要将路径用引号引起来,并在路径字符串的末尾附加一个额外的反斜杠。

【讨论】:

  • 感谢科迪的所有帮助。我一直在阅读的文档(VS 2010 的 MSBuild 命令行参考:msdn.microsoft.com/en-us/library/ms164311.aspx)使用 OutputDir。我会说我们正在阅读不同的页面。我现在也成功构建了,使用像 c:\mydir 这样的绝对目录引用。
  • @Mike:当您在许多不同的地方记录完全相同的功能时,就会发生这些事情。我不确定您是否说OutputPath 对您不起作用? OutDir 将仍然有效。
  • 伙计们。没有OutputDir 参数。只有OutputPath 和OutDir。别再添乱了。
  • 仅供参考 - OutputPath 似乎可以是绝对路径。
  • @StevenLiekens 我认为OutputDir 来自旧版本的 MSBuild。我可以在我的 csproj 文件中看到它。他们用现代 VS 编译得很好。
【解决方案2】:

我能够为 MSBuild 命令行配置 OutDir。请使用命令在下面的链接中查看我的答案。 看我的回答https://stackoverflow.com/a/26477048/1006422

【讨论】:

    【解决方案3】:

    你应该使用OutputPath,更重要的是你应该使用正确的语法:

    msbuild mysolution.sln /p:OutputPath=c:\mydir
    

    【讨论】:

    • 感谢您对此的帮助。当您提到语法问题时,我认为您的意思是 /p 而不是 -p 。我实际上在 cmd.exe 中使用了 /p ,但在这里弄错了 - PowerShell 太多了。至于输出路径,死定了。谢谢。
    • 确保去掉结尾\ 。 /p:OutputPath=c:\mydir 而不是 /p:OutputPath=c:\mydir\
    • 我试过这个,但是当项目选项中指定链接器输出目录时,MSBuild 似乎忽略了OutputPath。
    • 如果这不起作用,1:考虑使用OutDir 而不是OutputPath。 2:确保OutDir 是为您的/p: 参数列出的第一件事。
    • OutputPath 对我没有影响,但 OutDir 做到了
    【解决方案4】:

    我相信您应该使用 OutputPath。

    【讨论】:

      猜你喜欢
      • 2019-04-24
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      • 2012-12-24
      • 2018-01-08
      • 1970-01-01
      • 2011-09-26
      • 2020-06-18
      相关资源
      最近更新 更多