使用Roslyn程序集的ClickOnce部署:清单版本不匹配

本文关键字:单版本 版本 不匹配 程序集 Roslyn ClickOnce 部署 使用 | 更新日期: 2023-09-27 18:30:06

我正在尝试部署一个Clickonce应用程序,该应用程序通过Nuget包引用Roselyn程序集。

Roslyn Nuget软件包的版本为1.2.20906.2,但是:

  1. 当我查看packages文件夹中的dll属性时,我看到DLL的版本为1.2.20906.1
  2. 当我查看VS2012解决方案资源管理器中的引用属性时,它显示版本1.2.0.0(路径指向Nuget包dll)

对于所有Roslyn引用,Local copy都设置为true,如同Specific version一样。

当我发布我的clickonce时,包含和部署的Dll版本为1.2.20906.1,但clickonce清单状态为:

<dependency>
    <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Roslyn.Services.dll" size="1345672">
        <assemblyIdentity name="Roslyn.Services" version="1.2.0.0" publicKeyToken="31BF3856AD364E35" language="neutral" processorArchitecture="msil" />
...

所以清单中的版本是1.2.0.0。

当我尝试在客户端上安装Clickonce时,我收到一条错误消息(从法语翻译过来):Reference in the manifest does not match the identity of the downloaded assembly Roslyn.Services.dll

客户端计算机是Windows 7 x86。

我试图在VS项目中瞄准AnyCPUx86,但没有成功。

当我通过xcopy在目标机器上部署时,应用程序运行良好。

感谢您的帮助。

使用Roslyn程序集的ClickOnce部署:清单版本不匹配

VS中的引用指向哪里?它指向软件包文件夹吗?如果没有,它应该这样做,因为这是您想要部署的程序集。您应该删除引用并重新添加它,指向具有要部署的版本的引用。它可能正在访问GAC中的旧版本,然后发布新版本,这将不起作用。ClickOnce是非常具体的,并且版本必须匹配。