首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在powershell中使用build宏来设置OutputPath?

是否可以在powershell中使用build宏来设置OutputPath?
EN

Stack Overflow用户
提问于 2015-11-10 21:06:05
回答 1查看 626关注 0票数 2

与此问题相关:Is it possible to set project's Output Path property from nuget powershell?

如何将项目的输出路径设置为使用宏?就像在csproj文件中编辑它一样。

代码语言:javascript
复制
(Get-Project).ConfigurationManager.ActiveConfiguration.Properties.Item("OutputPath").Value =
    "$(SolutionDir)bin"

这解决了

代码语言:javascript
复制
<OutputPath>%24%28SolutionDir%29\bin</OutputPath>

但应该是

代码语言:javascript
复制
<OutputPath>$(SolutionDir)\bin</OutputPath>
EN

回答 1

Stack Overflow用户

发布于 2015-11-12 15:59:06

我找到了一种通过xml更改csproj的解决方法。

代码语言:javascript
复制
function Set-OutputPathRaw( $projectObj, $outputPath )
{
<#

.SYNOPSIS
Set the output path directly in the csproj file

.PARAMETER projectObj
The project to set

.PARAMETER outputPath
The path to set in the output path. May use dollar-sign macros

#>
    $projectObj.Save() # save beforehand

    $csproj = [xml](Get-Content $projectObj.FullName)

    $nsmgr = New-Object System.Xml.XmlNamespaceManager -ArgumentList $csproj.NameTable
    $nsmgr.AddNamespace('a', 'http://schemas.microsoft.com/developer/msbuild/2003')

    $outputpathnodes = $csproj.SelectNodes('/a:Project/a:PropertyGroup/a:OutputPath/text()',$nsmgr)

    foreach($outputnode in $outputpathnodes)
    {
        $outputnode.Value = $outputPath
    }

    $csproj.Save($projectObj.FullName)
}

通过以下方式调用:

代码语言:javascript
复制
Set-OutputPathRaw $project "`$(SolutionRoot)\bin\`$(Configuration)"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33630705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档