ClickOnce清单,包括来自GAC的文件

问题描述 投票:0回答:1

我们有两台构建服务器,其中一台安装了适用于.Net v2.9的Azure SDK,另一台则没有。]

我们在这些服务器上运行ClickOnce清单生成例程,并且在安装了Azure SDK的服务器上,由于包含一些错误的依赖关系,因此所生成的清单被“破坏”了,其中一个被认为是GAC的程序集,从未安装在我们的客户端计算机上,因此安装失败。

带入清单的其他依赖项来自C:\ Program Files \ Microsoft SDKs \ Azure.NET SDK \ v2.9 \ bin \ plugins \ Diagnostics:

  • Microsoft.Data.Edm.dll
  • Microsoft.Data.Services.Client.dll
  • Microsoft.Data.OData.dll
  • 但是真正破坏我们部署的是:

<dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
  <assemblyIdentity name="Microsoft.Hpc.Azure.FileStaging.Client" version="4.0.0.0" publicKeyToken="31BF3856AD364E35" language="neutral" processorArchitecture="msil" />
</dependentAssembly>

dependencyType="preRequisite"属性告诉ClickOnce该程序集应安装在客户端计算机的GAC中,这是导致安装失败的原因:

enter image description here

查看构建日志,我可以在装有SDK的机器上看到以下日志消息:

 [_CopyFilesMarkedCopyLocal] Copy
     [Copy] Copying file from "C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Microsoft.Data.Edm.dll" to "..\bin_x64\Release\Microsoft.Data.Edm.dll".
     [Copy] Copying file from "C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Microsoft.Data.Services.Client.dll" to "..\bin_x64\Release\Microsoft.Data.Services.Client.dll".
     [Copy] Copying file from "C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Microsoft.Data.OData.dll" to "..\bin_x64\Release\Microsoft.Data.OData.dll".

我的问题是,为什么MSBuild会在此特定机器上决定包括这些依赖项,而我又如何防止它这样做呢?显然,答案是Microsoft.Common.CurrentVersion.targets建立其AssemblySearchPaths的方式,但是为什么它决定包括我的应用程序完全不依赖的程序集?

[我们有两台构建服务器,其中一台安装了适用于.Net v2.9的Azure SDK,另一台没有。我们在这些服务器以及该服务器上运行ClickOnce清单生成例程...] >

msbuild clickonce
1个回答
0
投票

也许这些程序集不适合您使用

© www.soinside.com 2019 - 2024. All rights reserved.