gpt4 book ai didi

c# - 另一个 ClickOnce GAC 引用问题

转载 作者:行者123 更新时间:2023-11-30 17:16:37 25 4
gpt4 key购买 nike

我正在尝试部署更新,突然收到有关需要在 GAC 中安装 log4net.dll 版本 1.2.10.0 的消息。这是版本号 38,我将属性设置为 Copy Local = true,并将值设置为包含在应用程序文件设置中。我什至放弃并将 log4net.dll 注册到目标机器上的 GAC 中。有趣的是,此更新在另外两台计算机上运行良好。

我不确定自上次更新以来发生了什么变化?

干杯

鲍勃

编辑:我在 log4net 的 list 文件中找到了这个条目。它不在我使用 log4net 的其他应用程序的任何其他 list 文件中吗?然而,如果我尝试修改该文件,clickonce 会知道并说安装已损坏。

<dependency>
<dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
<assemblyIdentity name="log4net" version="1.2.10.0" publicKeyToken="692FBEA5521E1304" language="neutral" processorArchitecture="x86" />
</dependentAssembly>

最佳答案

我最好的猜测是您对 log4net.dll 有两个依赖项。On 直接来自您的项目,它被引用,一个是来自另一个库的隐式引用(通常是为 .net 1.1 编译的库,在我的例子中它发生在 Crystal Reports 中)。我的猜测是这两个引用指向不同的版本。

  1. 您可以尝试在目标计算机上保留安装的 log4net,并将其从 ClickOnce 项目的应用程序文件中排除。这样,ClickOnce 安装将不需要它(但我不清楚安装后在尝试运行应用程序时会发生什么)。
  2. 如果它不起作用或在运行时失败,那么在引用它的项目中将“复制本地和特定版本”设置为 false 就可以解决问题。但是 GAC 中的 log4net 将是应用程序运行的先决条件,这意味着您需要安装 .NET 1.1(或 2.0/3.5 full)。 350MB 的先决条件是相当重的...
  3. 您在发布后更改 list 文件的想法可能工作。为避免 ClickOnce 提示安装已损坏,您需要使用 MAGE( list 编辑和生成工具,通常可以从开始菜单组中获得 Visual Studio )。我不知道如果你的申请会发生什么在运行时确实需要 log4net,但找不到它。

关于c# - 另一个 ClickOnce GAC 引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7096918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com