gpt4 book ai didi

c# - 我们如何获得在 Visual Studio Publish 中使用的相同发布命令

转载 作者:太空狗 更新时间:2023-10-30 00:51:50 26 4
gpt4 key购买 nike

我正在使用 MSDeploy.exe 发布我的网络应用程序:

msdeploy.exe 
-verb:sync
-source:package=mypackage.zip
-dest:auto,computerName=MyServer
-allowUntrusted

这会将我的包同步到目标服务器并在此过程中删除所有不需要的文件。有时资源(例如:MyResource.dll)被 IIS 工作进程锁定并且不允许删除操作,因此部署失败并出现错误:

Access to the path "C:\MyResource.dll" is denied.

但是,如果我在 VisualStudio 中使用发布功能,我的网站将毫无问题地发布到服务器。锁定的文件保留在文件夹中,错误会被忽略。

我想 VS 可能使用这个开关:

-enableRule:DoNotDeleteRule

但我对此不是很确定。

我的问题:-

  1. 能否通过输出窗口或日志文件获取VS使用的发布命令?
  2. 有没有办法停止远程服务器上的应用程序池? (这将有助于释放锁定的资源)*IISRESET 不适合,因为我不想为了部署一个 webapp 而关闭所有网站。

我也试过 PSEXEC :

psexec.exe -s \\MyServer appcmd.exe stop apppool /apppool.name=MyAppPool

它在命令行中运行良好,但是当我将它放入脚本中进行构建自动化时,它返回错误:

The handle is invalid.
Couldn't access MyServer.

(用头撞墙)

最佳答案

回答我自己的问题:

1)能否通过输出窗口或日志文件获取VS使用的发布命令?

是的,我们可以将命令输出到输出窗口。
您需要做的只是添加一个名为 <YourProjectName>.wpp.targets 的文件。到项目目录的根目录。并编辑如下内容:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<UseMsdeployExe>true</UseMsdeployExe>
</PropertyGroup>
</Project>

现在您可以使用 Visual Studio 发布,并且可以在输出窗口中看到 MSDeploy 命令。

结帐 Sayed Ibrahim Hashimi 博客 here了解更多信息。


2) 有没有办法停止远程服务器上的应用程序池?

我设法使用 MSDeploy 命令的 -preSync -postSync 启动/停止/回收远程 AppPool。

MSDeploy.exe 
-source:package="mypackage.zip"
-dest:auto,ComputerName=MyServer,IncludeAcls=False
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-allowUntrusted
-preSync:runCommand="C:\Windows\System32\inetsrv\appcmd stop apppool <AppPoolName>"
-postSync:runCommand="C:\Windows\System32\inetsrv\appcmd start apppool <AppPoolName>"

希望这有帮助 =)

关于c# - 我们如何获得在 Visual Studio Publish 中使用的相同发布命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24829619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com