问题标签 [publisher-policy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
454 浏览

.net-assembly - 我在 GAC 上的策略重定向不起作用

我在 WinForms 中创建了一个基本项目,在该项目上.exe加载了一个非常简单的库:

.exe:

图书馆:

真的很简单。库的第一个版本的程序集:

然后我在 GAC 上安装了 v1.0.0.0:

我将库上的代码更改为不同的:

并将程序集版本更改为 1.0.0.1。然后我将该库安装到 GAC。

仍在消耗 1.0.0.0 .dll,因此.exe我创建了一个使用 v1.0.0.1 的策略:

.config看起来像这样的地方:

之后,我将策略安装到 GAC:

它说程序集已成功添加到缓存中,但我的 .exe 仍在使用 v1.0.0.0。

那么,为什么我的重定向不起作用?

0 投票
1 回答
1203 浏览

gac - 多个 .dll 的 GAC 程序集重定向

我正在尝试重定向一个特定.dll的,我们称之为MyAssembly.dll。此程序集有两个版本:

我希望这两个程序集重定向到它的第三个版本:1.2.0.0. 为此,我编写了这个.config文件来构建Publisher Policy要在 GAC 上应用的文件:

有了这个,我创建了适当的.config文件来生成策略。但是当我想创建Policy.

在下一步之前注意:程序集版本控制的工作方式如下:

第一次我想创建一个策略时,我意识到,如果我要重定向的程序集版本是:1.0.0.0我必须创建一个匹配的策略,如下所示:

有了这个,我可以将任何MyAssembly.dll从 1.0.* 重定向到 1.1 版。

但是,如果我想重定向多个程序集,我该如何生成该策略,就像我上面解释的那样?我的保单应该是什么样子?

如果我有两个程序集:

我该如何构建PublisherPolicy

0 投票
0 回答
35 浏览

c# - 发布者文件问题

我在这里有一个与这篇文章非常相似的问题:

发布不起作用,将 FW 2.0 dll 引用到 FW 4.0 winform

我有一个 3.5 版本的应用程序,它使用 GAC 中的发布者文件。当我将它部署到我的开发服务器时,一切正常,但是当我将此应用程序转换为 4.0 并将其部署到我的开发服务器(仍在 GAC 中引用 3.5 程序集)时,我的应用程序似乎忽略了我的策略文件。

我已经尝试了几乎所有我能想到的:

- 添加/删除

- 确保所有内容都引用 gac dll - 在 anycpu 和 x86 版本中部署

如果我手动添加,这将起作用:

在配置文件中,但那违背了我的政策的目的,不是吗?

任何建议,将不胜感激。

0 投票
1 回答
87 浏览

.net - 由于发布策略,wpf 启动缓慢......也许

多年来,我一直使用 x-copy 部署我的 .NET 程序集,没有任何问题。从上周开始,我们有一个小团队负责构建一个包含 .NET 程序集和 exe 以及 c++ 遗留 exe 和 dll(超过 200 个文件)的设置。第一次安装后,我的 wpf 应用程序有一个问题:启动时间非常长。我已经使用 procmon 分析了我的一个 wpf 应用程序(ps:.NET 程序集是 GACed 和 NGened),并且我看到该过程对所有其他不相关(> 200)文件进行了多次操作(见附件截图),我认为这是应用程序启动时间缓慢的主要原因。这与 .NET 发布者政策有关吗?如何禁用此行为以使我的应用程序再次快速?提前致谢!

在此处输入图像描述

0 投票
1 回答
109 浏览

.net - .NET 发布者策略目标框架

概括

如何创建以与重定向程序集相同的框架版本为目标的发布者策略程序集?

TL;博士

我有一个Assembly.dllwith 版本1.x.y.0,我也有一个发布者策略,命名为policy.1.0.Assembly.dll将版本重定向1.0.0.0-1.x.y.01.x.y.0.

目标是Assembly.dll.NET Framework 3.5。我是否认为policy.1.0.Assembly.dll应该以 .NET Framework 3.5 为目标,以便在所有框架 3.5+ 上正常工作?如果是,我该如何创建这样的发布者策略程序集?AL我在 Assembly Linker ( )上看不到任何相关的命令行开关。

目前,当我 GAC 程序集时,Assembly.dll最终以. ILDASM 向我展示了目标运行时不同:\Windows\assemblypolicy.1.0.Assembly.dll\Windows\Framework.NET\assembly

Assembly.dll

policy.1.0.Assembly.dll