0

我正在尝试部署一个 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)

Local copySpecific version对于所有 Roslyn 引用,设置为 true 。

当我发布 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 部署时,应用程序运行良好。

任何帮助表示赞赏。

4

1 回答 1

0

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

于 2013-09-06T19:09:18.620 回答