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

时间:2013-09-04 13:27:42

标签: c# visual-studio-2012 clickonce roslyn

我正在尝试部署一个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)
  3. 对于所有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项目中定位 AnyCPU x86 但没有成功。

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

    任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

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