我正在尝试使用GacInstall提供程序通过Windows Management Service将.Net 4.5程序集部署到目标计算机。这是我们持续部署的一部分。遗憾的是,这似乎不起作用。
我怀疑基于http://technet.microsoft.com/en-us/library/gg607836(v=ws.10).aspx
的说明不支持此操作在WindowsServer®2008R2,Windows®7和更早版本的操作系统中,默认情况下,使用Web管理服务(WMSVC)进行GAC部署不适用于.NET Framework 4程序集。
当我尝试在目标计算机上本地部署包含GAC程序集的Web Deploy程序包时,它可以正常工作。无论如何,本地部署不是我们持续部署所需的。
是否有人通过WMSvc成功将.Net 4.5程序集部署到GAC?
以下是相关的部署日志:
本地部署
SetParameters from:
"C:\CloudConnect\Rewriter.SetParameters.xml"
You can change IIS Application Name, Physical path, connectionString
or other deploy parameters in the above file.
-------------------------------------------------------
Start executing msdeploy.exe
-------------------------------------------------------
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package='C:
\CloudConnect\Rewriter.zip' -dest:auto,includeAcls="False" -verb:sync -disableLi
nk:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtens
ion -setParamFile:"C:\CloudConnect\Rewriter.SetParameters.xml"
Info: Adding sitemanifest (sitemanifest).
Info: Adding gacAssembly (D:\dev\cloudcon\Web\packages\AutoMapper.3.1.0\lib\net4
0\AutoMapper.dll).
Info: Adding gacAssembly (D:\dev\cloudcon\Web\Common\Dto\bin\Release\CloudConnec
t.Dto.dll).
Info: Adding gacAssembly (D:\dev\cloudcon\Web\CloudConnect.Portal\Provisioning\M
odels\bin\Release\CloudConnect.Portal.Provisioning.Models.dll).
Info: Adding gacAssembly (D:\dev\cloudcon\Web\CloudConnect.Portal\Provisioning\R
epositories\bin\Release\CloudConnect.Portal.Provisioning.Repositories.dll).
Info: Adding gacAssembly (D:\dev\cloudcon\Web\Rewriter\RewriteProvider\bin\Relea
se\CloudConnect.RewriteProvider.dll).
Info: Adding gacAssembly (D:\dev\cloudcon\Web\packages\EntityFramework.5.0.0\lib
\net45\EntityFramework.dll).
Info: Adding gacAssembly (D:\dev\cloudcon\Web\packages\log4net.2.0.3\lib\net40-f
ull\log4net.dll).
Info: Updating file (Rewriter\bin\AutoMapper.dll).
Info: Updating file (Rewriter\bin\CloudConnect.Dto.dll).
Info: Updating file (Rewriter\bin\CloudConnect.Portal.Provisioning.Models.dll).
Info: Updating file (Rewriter\bin\CloudConnect.Portal.Provisioning.Repositories.
dll).
Info: Updating file (Rewriter\bin\CloudConnect.RewriteProvider.dll).
Info: Updating file (Rewriter\bin\EntityFramework.dll).
Info: Updating file (Rewriter\bin\log4net.dll).
Info: Updating file (Rewriter\bin\Rewriter.dll).
Info: Updating file (Rewriter\Rewriter.wpp.targets).
Info: Updating file (Rewriter\Web.config).
Info: Adding ACL's for path (Rewriter)
Info: Adding ACL's for path (Rewriter)
Total changes: 20 (8 added, 0 deleted, 12 updated, 0 parameters changed, 1695348
bytes copied)
WMSvc部署
[MSDeployPublish] VSMSDeploy (7s)
[02:22:48][VSMSDeploy] Starting Web deployment task from source: package(C:\BuildAgent\work\4a097252cfabe817\Rewriter\Rewriter\obj\Release\Package\Rewriter.zip) to Destination: auto().
[02:22:50][VSMSDeploy] Adding sitemanifest (sitemanifest).
[02:22:50][VSMSDeploy] Adding ACL's for path (Rewriter)
[02:22:50][VSMSDeploy] Adding ACL's for path (Rewriter)
[02:22:55][VSMSDeploy] Adding sitemanifest (sitemanifest).
[02:22:55][VSMSDeploy] Adding gacAssembly (C:\BuildAgent\work\4a097252cfabe817\packages\AutoMapper.3.1.0\lib\net40\AutoMapper.dll).
[02:22:55][VSMSDeploy] Adding gacAssembly (C:\BuildAgent\work\4a097252cfabe817\Common\Dto\bin\Release\CloudConnect.Dto.dll).
[02:22:55][VSMSDeploy] Adding gacAssembly (C:\BuildAgent\work\4a097252cfabe817\CloudConnect.Portal\Provisioning\Models\bin\Release\CloudConnect.Portal.Provisioning.Models.dll).
[02:22:55][VSMSDeploy] Adding gacAssembly (C:\BuildAgent\work\4a097252cfabe817\CloudConnect.Portal\Provisioning\Repositories\bin\Release\CloudConnect.Portal.Provisioning.Repositories.dll).
[02:22:55][VSMSDeploy] Adding gacAssembly (C:\BuildAgent\work\4a097252cfabe817\Rewriter\RewriteProvider\bin\Release\CloudConnect.RewriteProvider.dll).
[02:22:55][VSMSDeploy] Adding gacAssembly (C:\BuildAgent\work\4a097252cfabe817\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll).
[02:22:55][VSMSDeploy] Adding gacAssembly (C:\BuildAgent\work\4a097252cfabe817\packages\log4net.2.0.3\lib\net40-full\log4net.dll).
[02:22:55][VSMSDeploy] Updating file (Rewriter\bin\CloudConnect.Dto.dll).
[02:22:55][VSMSDeploy] Updating file (Rewriter\bin\CloudConnect.Portal.Provisioning.Models.dll).
[02:22:55][VSMSDeploy] Updating file (Rewriter\bin\CloudConnect.Portal.Provisioning.Repositories.dll).
[02:22:55][VSMSDeploy] Updating file (Rewriter\bin\CloudConnect.RewriteProvider.dll).
[02:22:55][VSMSDeploy] Updating file (Rewriter\bin\Rewriter.dll).
[02:22:55][VSMSDeploy] Updating file (Rewriter\Web.config).
[02:22:55][VSMSDeploy] Adding ACL's for path (Rewriter)
[02:22:55][VSMSDeploy] Adding ACL's for path (Rewriter)
[02:22:55][VSMSDeploy] Successfully executed Web deployment task.
[02:22:55][VSMSDeploy] Publish Succeeded.
答案 0 :(得分:1)
“C:\ Program Files \ IIS \ Microsoft Web Deploy V3 \ msdeploy.exe”
是的,这很有效。您也可以在Web服务器上安装该工具,下载from here。建议采用哪种方法。
对于潜在的问题有点了解,问题是WMSvc没有时间机器来猜测.NET 4.0会发生什么。 .NET版本的一个相当大的变化是GAC存储在不同的目录中。它曾经存在于以前的.NET版本的c:\ windows \ assembly中,它已被移动到.NET 4.0中的c:\ windows \ microsoft.net \ assembly
当您需要在GAC中注册程序集时,这非常重要,无论注册需要哪种工具来选择正确的GAC目录。在桌面计算机上,通过两个不同版本的gacutil.exe来完成。
不幸的是,MSDeploy也很不稳定,正如您链接的文章所指出的那样,msdeploy.exe.config文件的内容很重要。版本3包含这一个:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true" >
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
换句话说,它适用于.NET 4.0和4.5 Web项目,但不适用于针对早期版本的项目。如果这很重要,那么要么保留多个版本或编辑文件(记事本很好)并交换两个<supportedRuntime>
元素,所以v2.0是第一个。锁定.NET目标版本当然是最好的。