ClickOnce and GAC

5
我有一个WinForms应用程序,使用.net 3.5。我使用ClickOnce在内部网络中部署它,并在多台客户机上使用。我将应用程序发布在内部Web服务器上(http://desbiz/CarwinClickOnce)。
在开发环境中(我的PC),我的应用程序使用GAC程序集,例如Fk.Security.Common.dll v.1.0.0.0。
在WinForms应用程序csproj的属性中的“发布”选项卡->“应用程序文件”中,我为Fk.Security.Common.dll引用设置了值包括。
现在,
一些客户机在GAC中具有Fk.Security.Common.dll v.1.0.0.0引用
其他客户端没有Fk.Security.Common.dll v.1.0.0.0 GAC引用
如果客户端使用ClickOnce安装winform应用程序,则存在以下问题:
1.) 如果GAC中有Fk.Security.Common.dll v.1.0.0.0引用,则不适用于ClickOnce中包含的Fk.Security.Common.dll v.1.0.0.0引用。
问题:可能编译在Fk.Security.Common.dll v.1.0.0.0引用中包含的ClickOnce中的代码比GAC中的Fk.Security.Common.dll v.1.0.0.0引用中的代码更更新。
解决方案:卸载GAC中的Fk.Security.Common.dll v.1.0.0.0引用,并在GAC中安装ClickOnce发布中包含的Fk.Security.Common.dll v.1.0.0.0引用...
(如何使用ClickoNce卸载/安装GAC中的程序集???)
2.) 如果没有在GAC中引用Fk.Security.Common.dll,则适用于ClickOnce中包含的Fk.Security.Common.dll v.1.0.0.0引用。没有问题。
注意:客户机上的用户具有管理员权限。
关于这些问题的任何解决方案吗?
提前感谢您。
3个回答

6

ClickOnce无法在GAC中安装或卸载文件。

你是否编写了Fk.Security.Common.dll?如果是,请增加版本号(v.1.0.0.1)并重新编译它。当你引用它时,将“Specific Version”属性设置为“True”,将“Version”属性设置为你的新版本号。这样做可以解决问题,而不必从每个人的GAC中卸载旧程序集。


如果使用 ClickOnce 安装应用程序的用户是客户端 PC 的管理员,则无法在 GAC 中安装/卸载文件吗?但该用户是管理员!谢谢。 - Alhambra Eidos
无论用户是否是管理员都没有关系; ClickOnce 无法对 GAC 进行任何操作。 如果您想对 GAC 进行更改,必须使用其他方式,例如使用 .msi 文件。 - codeConcussion

4
在您的Visual Studio项目中,单击引用的程序集(Fk.Security.Common.dll),在属性窗口中将 Copy Local 属性设置为 True (我假定您正在使用ClickOnce)。

2
无法安装或运行应用程序。应用程序要求先在全局程序集缓存 (GAC) 中安装程序集 Telerik.Windows.Data Version 2012.1.215.40。
我在发布前在Visual Studio中忘记将解决方案配置从“Debug”更改为“Release”,导致出现了同样的错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接