【问题标题】:Using GacInstall Web Deploy provider to install .Net 4.5 assemblies使用 GacInstall Web Deploy 提供程序安装 .Net 4.5 程序集
【发布时间】:2014-02-12 08:56:35
【问题描述】:

我正在尝试使用 GacInstall 提供程序通过 Windows 管理服务将 .Net 4.5 程序集部署到目标计算机。这是我们持续部署的一部分。不幸的是,它似乎不起作用。

根据http://technet.microsoft.com/en-us/library/gg607836(v=ws.10).aspx的描述,我怀疑不支持该操作

在 Windows Server® 2008 R2、Windows® 7 和更早的操作系统中,默认情况下,使用 Web 管理服务 (WMSVC) 的 GAC 部署不适用于 .NET Framework 4 程序集。

当我尝试在目标机器上本地部署包含 GAC 程序集的 Web 部署包时,它工作正常。无论如何,本地部署并不是我们持续部署所需要的。

是否有人成功通过 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.

【问题讨论】:

    标签: .net deployment .net-assembly msdeploy


    【解决方案1】:

    “C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe”

    是的,这行得通。您也可以在您的网络服务器上安装该工具,下载它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 项目,但适用于针对早期版本的项目。如果这很重要,那么要么保留多个版本,要么编辑文件(记事本很好)并交换两个 &lt;supportedRuntime&gt; 元素,因此 v2.0 是第一个。锁定 .NET 目标版本当然是最好的。

    【讨论】:

    • 非常感谢您的回答。我实际上在 Web 服务器上安装了 Web Deploy 3.5。当我手动运行部署命令时,它就可以了。问题在于通过 WMSvc 运行它。日志看起来很好,但程序集没有放入 GAC。是否有任何日志可以帮助我了解我的情况出了什么问题?
    • 我以为我解释得很透彻。不要使用 WMSvc,它不会做对。我想看看发生了什么然后使用 Windows 资源管理器。 v4 GAC 位于 c:\windows\microsoft.net\assembly,您将按原样查看文件夹,首先查看 GAC_MSIL。 v2 GAC 位于 c:\windows\assembly 中,您通常会看到平面视图。
    猜你喜欢
    • 1970-01-01
    • 2012-10-12
    • 2013-04-12
    • 1970-01-01
    • 2013-07-07
    • 2023-03-18
    • 2022-07-04
    • 2018-10-11
    • 1970-01-01
    相关资源
    最近更新 更多