使用Roslyn程序集的ClickOnce部署:清单版本不匹配
本文关键字:单版本 版本 不匹配 程序集 Roslyn ClickOnce 部署 使用 | 更新日期: 2023-09-27 18:30:06
我正在尝试部署一个Clickonce应用程序,该应用程序通过Nuget包引用Roselyn程序集。
Roslyn Nuget软件包的版本为1.2.20906.2,但是:
- 当我查看
packages
文件夹中的dll属性时,我看到DLL的版本为1.2.20906.1 - 当我查看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项目中瞄准AnyCPU和x86,但没有成功。
当我通过xcopy在目标机器上部署时,应用程序运行良好。
感谢您的帮助。
VS中的引用指向哪里?它指向软件包文件夹吗?如果没有,它应该这样做,因为这是您想要部署的程序集。您应该删除引用并重新添加它,指向具有要部署的版本的引用。它可能正在访问GAC中的旧版本,然后发布新版本,这将不起作用。ClickOnce是非常具体的,并且版本必须匹配。