C# 如何从PowerShell运行Microsoft命令行编译器

C# 如何从PowerShell运行Microsoft命令行编译器,c#,windows,visual-studio,powershell,C#,Windows,Visual Studio,Powershell,Windows 7、PowerShell 2、Visual Studio 2015,我正在尝试从PowerShell运行命令行C#编译器(不是Visual Studio中的嵌入式PowerShell,而是一个常规的完整命令窗口) 在正常的事件过程中,在使用命令行编译器之前,您需要运行C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat,但这在这里不起作用,因为环境变量将在cmd.exe中设置,然后在控件返回Powe

Windows 7、PowerShell 2、Visual Studio 2015,我正在尝试从PowerShell运行命令行C#编译器(不是Visual Studio中的嵌入式PowerShell,而是一个常规的完整命令窗口)

在正常的事件过程中,在使用命令行编译器之前,您需要运行
C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
,但这在这里不起作用,因为环境变量将在cmd.exe中设置,然后在控件返回PowerShell时丢弃

提供了听起来可能是解决方案的Invoke-Environment.ps1,但是
Invoke-Environment“C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat”
什么都不做,没有任何效果


我是否以错误的方式使用Invoke Environment,或者我还应该做些什么?

我制作了一个简单的cmdlet,将当前PowerShell实例设置为“开发人员环境”,我只是将其保留在我的
$profile
中,它使用ms中的两个模块,一个是查找visual studio的安装位置,另一个是VS2019及以上版本,用于启动“开始”菜单上的“vs PowerShell”功能。 给你:

function Enter-VsDevEnv {
    [CmdletBinding()]
    param(
        [Parameter()]
        [switch]$Prerelease,
        [Parameter()]
        [string]$architecture = "x64"
    )

    $ErrorActionPreference = 'Stop'

    if ($null -eq (Get-InstalledModule -name 'VSSetup' -ErrorAction SilentlyContinue)) {
        Install-Module -Name 'VSSetup' -Scope CurrentUser -SkipPublisherCheck -Force
    }
    Import-Module -Name 'VSSetup'

    Write-Verbose 'Searching for VC++ instances'
    $vsinfo = `
        Get-VSSetupInstance  -All -Prerelease:$Prerelease `
    | Select-VSSetupInstance `
        -Latest -Product * `
        -Require 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64'

    $vspath = $vsinfo.InstallationPath

    switch ($env:PROCESSOR_ARCHITECTURE) {
        "amd64" { $hostarch = "x64" }
        "x86" { $hostarch = "x86" }
        "arm64" { $hostarch = "arm64" }
        default { throw "Unknown architecture: $switch" }
    }

    $devShellModule = "$vspath\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"

    Import-Module -Global -Name $devShellModule

    Write-Verbose 'Setting up environment variables'
    Enter-VsDevShell -VsInstanceId $vsinfo.InstanceId  -SkipAutomaticLocation `
        -devCmdArguments "-arch=$architecture -host_arch=$hostarch"

    Set-Item -Force -path "Env:\Platform" -Value $architecture

    remove-Module Microsoft.VisualStudio.DevShell, VSSetup
}

C#命令行编译器…你的意思是
msbuild
?@Hackerman是的,msbuild,甚至csc。可能是