Visual studio ClickOnce清单是如何构建的?

Visual studio ClickOnce清单是如何构建的?,visual-studio,clickonce,Visual Studio,Clickonce,我的团队正在为内部应用程序开发一个新功能。我们已经将项目分为几个部分,并一直在开发我们的功能。现在,我正在尝试使用Click Once部署到QA环境。当我尝试使用已部署的Click Once install安装应用程序时,出现以下错误: 无法安装或运行应用程序。应用程序需要 该程序集Infrastics4.Win.UltraWinGrid.ExcelExport.v15.2版本 15.2.20152.1000必须首先安装在全局程序集缓存(GAC)中 当我打开.manifest文件时,我可以看到原

我的团队正在为内部应用程序开发一个新功能。我们已经将项目分为几个部分,并一直在开发我们的功能。现在,我正在尝试使用Click Once部署到QA环境。当我尝试使用已部署的Click Once install安装应用程序时,出现以下错误:

无法安装或运行应用程序。应用程序需要 该程序集Infrastics4.Win.UltraWinGrid.ExcelExport.v15.2版本 15.2.20152.1000必须首先安装在全局程序集缓存(GAC)中

当我打开.manifest文件时,我可以看到原因。此程序集列为先决条件

  <dependency>
    <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
      <assemblyIdentity name="Infragistics4.Win.UltraWinGrid.ExcelExport.v15.2" version="15.2.20152.1000" publicKeyToken="7DD5C3163F2CD0CB" language="neutral" processorArchitecture="msil" />
    </dependentAssembly>
  </dependency>

我们不希望GAC中有这个组件。(请注意,没有我们的新功能的应用程序的QA构建工作正常,并且在.manifest中没有此依赖项。)

所以我不明白为什么它被列为先决条件。如果打开项目属性并选择“发布”选项卡,则可以配置“一次单击”部署。因此,我打开“应用程序文件”对话框并找到程序集。发布状态设置为“包含”(而不是“先决条件”或“先决条件(自动)”),因此我试图弄清楚为什么会像这样将其添加到我的清单中

其他信息:如果我在.manifest文件中进一步向下滚动,我还会看到以下条目:

  <dependency>
    <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Infragistics4.Win.UltraWinGrid.ExcelExport.v15.2.dll" size="147456">
      <assemblyIdentity name="Infragistics4.Win.UltraWinGrid.ExcelExport.v15.2" version="15.2.20152.2023" publicKeyToken="7DD5C3163F2CD0CB" language="neutral" processorArchitecture="msil" />
      <hash>
        <dsig:Transforms>
          <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
        </dsig:Transforms>
        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
        <dsig:DigestValue>9PKMWPyXwq1e6MjDM2jN++yzombFFoRA/GlyrvJTu00=</dsig:DigestValue>
      </hash>
    </dependentAssembly>
  </dependency>

9PKMWPyXwq1e6MjDM2jN++YZOMBFORA/GlyrvJTu00=

请注意,这是同一程序集的较新版本。当我对“应用程序文件”部分进行更改时,我会在这个依赖项标记中看到它们,而不是在第一个依赖项标记中看到它们。知道第一个依赖项标记来自何处吗?

它肯定位于您计算机上的GAC中,因此默认情况下,您的项目不会将其复制到发布版本目录中。在项目的“引用”节点中选择部件引用。在“属性”窗口中,将“复制本地”属性更改为true。重新生成项目,并验证它现在是否包含在“发布”>“应用程序文件”列表中,并且其发布状态为“包含”。这似乎没有产生任何影响。.manifest条目没有更改,当我尝试从ClickOnce部署安装时,仍然会收到错误消息。很难相信当发布状态如此不同时,清单没有更改。好的,使用基础设施支持,要求他们为他们的产品提供正确的联合部署程序。要明确的是,这两个依赖部分没有改变。我没有比较舱单的其余部分。很抱歉这很难相信,但这是事实。(我甚至在将“Copy Local”属性设置为True后清理并重新构建了解决方案。)如果有人有一个好文档的链接,我将不胜感激。到目前为止,我所看到的文章没有一篇是有用的。