Visual studio 使用PowerShell在Visual Studio中保存文件

Visual studio 使用PowerShell在Visual Studio中保存文件,visual-studio,powershell,automation,character-encoding,Visual Studio,Powershell,Automation,Character Encoding,使用Package Manager控制台中的Powershell,我可以: 但当我试图保存它时: $DTE.ExecuteCommand(“File.Save”, $file) 或 我得到一个错误: PM>$DTE.ExecuteCommand(“File.Save”)命令“File.Save”无效。 第1行字符:1 +$DTE.ExecuteCommand(“File.Save”) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +类别信息:操作停止:(:)[],COM

使用Package Manager控制台中的Powershell,我可以:

但当我试图保存它时:

$DTE.ExecuteCommand(“File.Save”, $file)

我得到一个错误:

PM>$DTE.ExecuteCommand(“File.Save”)命令“File.Save”无效。 第1行字符:1 +$DTE.ExecuteCommand(“File.Save”) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +类别信息:操作停止:(:)[],COMException +FullyQualifiedErrorId:System.Runtime.InteropServices.COMException

我怎样才能拯救它

实际上我想用其他编码保存它:


您可以使用

$DTE.ExecuteCommand("File.SaveSelectedItems")
还有

$DTE.ExecuteCommand("File.SaveAll")
但是,如果您这样做只是为了更改文件的编码,我建议您只运行下面的PowerShell代码,而不需要
$DTE
和Visual Studio

$content = Get-Content -Path $file -Encoding String
Set-Content -Value $content -Path $file -Encoding UTF8

是的,它起作用了。但是我怎样才能保存为。。。然后选择编码?我尝试使用这个PowerShell代码(在您的答案的第二部分),但它对我不起作用,因为我需要不带签名的UTF-8。但是,如果我手动执行,VS工作正常。我找不到通过
ExecuteCommand
打开编码菜单的方法,但是对于PowerShell解决方案,您可以看到另一个问题,因此通过
$DTE.commands File
获取命令列表,此命令
文件。SaveSelectedItemsAs
存在,但'IsAvalable=false'。与“File.AdvancedSaveOptions”相同,请参见@SergeyVlasov,是的,我在VS中手动执行此操作,我只想自动执行上面链接中的答案提到修复文件编码和编辑器配置,从而消除手动执行此操作的需要。@SergeyVlasov,我在菜单中没有看到“高级保存选项”
$DTE.ExecuteCommand("File.SaveAll")
$content = Get-Content -Path $file -Encoding String
Set-Content -Value $content -Path $file -Encoding UTF8