問題タブ [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 に答える
120 参照

.net - 強力な名前の非公開のアセンブリに発行者ポリシーを適用することは可能ですか?

私は仕事で共通のライブラリを作成しましたが、この質問とは異なり、GACには公開されていません。代わりに、会社固有のインストールフォルダーに非公開で公開されます。編集:すべての内部アプリはこの同じフォルダーに入ります。

パブリッシャーポリシーを適用して、古いアプリケーションが新しいバージョンのDLLを使用できるようにすることはまだ可能ですか? この記事は私ができるように聞こえますが、それは私には完全には明らかではありません。

その場合、会社固有のインストールフォルダに何を配布する必要がありますか?

  1. 共通ライブラリの設定ファイル?(policy.1.0.MyLibrary.config)(これが最も簡単です。)
  2. 共通ライブラリのポリシーDLL?(policy.1.0.MyLibrary.dll-#1の準拠バージョン。)
  3. または、共通ライブラリを使用するすべてのアプリケーションの構成ファイルのセットですか?(MyApp1.exe.config、MyApp2.exe.configなど)(YUCK!)
0 投票する
2 に答える
188 参照

.net - 開発中の共有アセンブリを参照する方法 (.NET)

私は、製品アプリケーションの構築に使用される一連の共通フレームワーク アセンブリの開発と保守を担当しています。これらのアセンブリは比較的新しく、新しい機能が実装されるなど、流動的な状態にあります。その結果、再構築や再配布が頻繁に行われることは珍しくありません。アセンブリが安定化するにつれて、これは減少すると予想されますが、現在はそうです。

現在、アセンブリは、開発プロジェクトが同じアセンブリを参照できる共通フォルダーに配置されています。更新の適用は、ファイルを置き換えるのと同じくらい簡単で、開発プロジェクトは、次回のロードおよびビルド時に変更を自動的に取得します。

私が抱えている問題は、フレームワーク上に構築されたアセンブリのいくつかの「レイヤー」がある可能性があることです。たとえば、すべてのアプリケーションで共有されるコア ライブラリと、コアを参照し、すべてのサーバー アプリケーションで共有されるサーバー ライブラリがあります。フレームワーク アセンブリが更新されるたびにすべての依存関係も再構築する必要があるため、これは非常に大きなタスクになります。新しいバージョンがリリースされるたびにすべての開発者がシステムを更新する必要があるため、GAC を使用できるとは思えません。

パブリッシャー ポリシーを調査しましたが、いくつかの理由から、これで問題が解決するかどうか疑問があります。

  • 1 つには、フレームワーク アセンブリを再構築するたびにファイルを再作成したくありません。このプロセスを自動化する方法はありますか?

  • アセンブリを GAC に入れる必要があるかどうかはわかりません。前述したように、アセンブリの新しいバージョンをリリースするたびに、開発者に再インストールや更新などを強制したくありません。

  • ネットワークのセットアップと構成を制御できないため、ファイルをネットワーク共有に配置して、「信頼」の問題全体を回避する必要があります。さらに、当社の開発者の多くは時々接続された方法で作業しており、切断されたときにファイルを利用できるようにしたいと考えています。

目標は、これらのアセンブリを使用しているアプリケーション開発者に対して、これらのアセンブリの更新を透過的にすることです。アプリケーションのインストール時にこれらのアセンブリをターゲット マシンの GAC にインストールすることは間違いありませんが、開発目的ではそうしたくありません。プロジェクトは異なるチームによって開発されているため、各アプリケーションのソリューションにプロジェクトを含めることも合理的ではありません。

これらの要件を抱えているのは私だけだとは想像できません。誰かが経験と知恵を共有して、私を解決策に導いてくれることを願っています。ありがとう!

0 投票する
1 に答える
1609 参照

.net - パブリッシャー ポリシー ファイルを削除することはできますか?

ベンダー提供のアセンブリ参照が台無しになっている状況があります。基本的に、使用したくないアセンブリのバージョンを指しています。FusionLog を使用してアセンブリ バインディング ログを表示すると、次のエントリが表示されます。

パブリッシャー ポリシー ファイルが見つからないようです。削除する方法はありますか? GAC からアセンブリを削除しようとしましたが、役に立ちませんでした。

問題の背景は、Sybase からクライアント ソフトウェアのパッチをインストールするように指示されたが、このパッチが以前のアセンブリ (11.0.1.22582) よりも古いバージョンのアセンブリ (11.0.0.11292) をインストールしたことです。なぜこれが起こったのか私に聞かないでください。

0 投票する
1 に答える
401 参照

c# - GAC のパブリッシャー ポリシー

dll v1 のコンシューマーを dll v2 にリダイレクトしたいと考えています。そのために、GAC にパブリッシャー ポリシーを追加します。ポリシーは GAC にある必要がありますか? これは、dll v2 自体も GAC に存在する必要があるということですか?

0 投票する
3 に答える
813 参照

wix - WIX を使用して 1 つのパブリッシャー ポリシーを GAC にインストールする適切な方法はどれですか?

WIX 3.5を使用して 1 つのパブリッシャー ポリシーを GAC にインストールする適切な方法はどれですか?

私はこれをやろうとしました:

VS2008 でコンパイルすると、次のエラーが表示されます。

policy.1.0.ClassLibrary1.dll が無効のようです。これが有効なアセンブリ ファイルであること、およびユーザーがこのファイルへの適切なアクセス権を持っていることを確認してください。詳細: HRESULT: 0x8013101b

そして最後に、VS2010 でコンパイルする場合、問題はないようです。しかし、インストール プロセスの最終段階では、DLL は適切にインストールされていますが、発行元ポリシーはインストールされていません。また、インストール中に生成されたログを読みましたが、原因を見つけることができませんでした。

読んでくれてありがとう。

0 投票する
0 に答える
158 参照

msbuild - 自動ビルドの一部としてパブリッシャー ポリシー アセンブリをビルドする

自動ビルドの一部として発行者ポリシー アセンブリを自動的にビルドする問題を解決した人はいますか? 私はウェブをトロールしましたが、これについて質問する人がたくさんいますが、解決策はありません.

ポリシー アセンブリの構築は、手動で行うと非常にエラーが発生しやすく、いずれにせよ、TeamCity で実行する継続的インテグレーション ビルドの一部である必要があります。

MSBuild を使用して TeamCity で実行できるソリューションを特に望んでいますが、必要に応じて他のソリューションから補間することもできます。確かに、誰かがこれをしたに違いありませんか?

0 投票する
1 に答える
1119 参照

.net - app.manifestでの正確な参照バージョンの指定

アプリにODP.Netの使用を実装しているときに、バージョンに潜在的な問題が発生したため、クイックテストアプリをノックアップして、影響があるかどうかを確認しました。

オラクルにアプリを持っている、または望んでいるクライアントがいますが、それらは異なるバージョンを使用しており、通常、ワークステーションにデプロイされているOracleクライアントのバージョンの企業標準があります。私たちのアイデアは、固定バージョンのODPに加えて、適切なインスタントクライアントを(プログラムディレクトリ内の)アプリとともにデプロイすることでした。これは、Oracleが、クライアントの特定のバージョンに対して、いずれかの側で2つのメジャーバージョンの互換性を保証するためです。 10.1ODPとクライアント11.1のデプロイを使用した理論上のOracle12まで。

それは問題ありませんが、問題は、クライアントが新しいバージョンのODPをGACに登録するOracleクライアントの上位バージョンと、アプリケーションに新しいバージョンを使用するように指示するパブリッシャーポリシーをデプロイする場合に発生します。使用するEL5とODPの特定のバージョンで構築されたEntlibContrib(ODPラッパー)からの1つのライブラリのカスタム実装を使用しており、新しいバージョンをGACにデプロイすると、テストアプリで証明されているように、これが失敗します。

これをテストするために、Win 7 x86がインストールされたクリーンなVMを使用してから、Oracle Client 10.2(GACにODP 10.2を登録)を追加し、テストアプリでODPとClient11.1を使用しました。これは正常に機能したので、GACに登録されたODPを使用してクライアント11.2をインストールしました。これにより、パブリッシャーポリシーも追加され、テストアプリが失敗することが証明されました。

これを回避するために、次のようにapp.manifestに依存関係エントリを追加しました。

これは、デプロイしているODPバイナリのバージョンと公開鍵と一致するため、テストアプリで使用することを期待していました。ただし、アプリを起動すると、次のエラーが発生しました。

The application has failed to start because its side-by-side configuration is incorrect.

また、イベントログには次のものが含まれます。

Activation context generation failed for "C:\Program Files\OPT\OPT\OraclePerformanceTester.exe". Dependent Assembly Oracle.DataAccess,processorArchitecture="x86",publicKeyToken="89b483f429c47342",type="win32",version="2.111.7.20" could not be found. Please use sxstrace.exe for detailed diagnosis.

sxstraceを使用すると、次の出力が得られました。

参照されるファイル(Oracle.DataAccess.dll)は、実行可能ファイルの隣のプログラムディレクトリに存在し、他のすべての依存関係もありますが、何らかの理由でそれを取得しません。私が以前に使用しなければならなかった唯一のマニフェストは、正常に機能したexeのUACチェックであり、私が見る限り、パブリッシャーポリシーをオーバーライドする正確なバージョンを指定する手順に従いました。私は何を間違えましたか?

乾杯

0 投票する
1 に答える
4956 参照

.net - アプリケーションが常に参照バージョンではなく最新の GAC バージョンを使用するのはなぜですか?

環境

GAC にバージョン 1.0 とバージョン 2.0 の 2 つの異なるバージョンのアセンブリがインストールされています。特定のバージョンとして 1.0 を参照しているアプリケーションを作成しました。

問題

アプリケーションを実行すると、常にバージョン 2.0 がロードされますが、アプリケーションは特にバージョン 1.0 を参照しています。

質問

なぜこうなった?アプリケーションがコンパイルされたバージョンを強制的にロードするにはどうすればよいですか?

私のアプリケーションはビルド時にバージョン 2.0 を認識しておらず、参照「特定のバージョン」メタデータが true に設定されているため、これがバインディング リダイレクトと関係があるとは思えません。

ありがとう。


編集:

私が参照しているアセンブリは、実際には ODAC パッケージの Oracle.DataAccess です。Policy.x.xxx.Oracle.DataAccess という名前の他のアセンブリが GAC で公開されていることに気付きました。


編集2:

Oracle.DataAccess ポリシーを調べたところ、バインディング リダイレクトを定義する構成が見つかりました。

アプリケーション構成にリバース バインディング リダイレクトを追加しましたが、GAC のポリシーが優先されているようです。この件を扱い、この構成でポリシーを無視することを提案しているMSDN の記事を見つけました。

しかし、それでもうまくいきません...


編集3:

GAC からポリシーを削除しようとして、マシンを再起動しました。それはついに働いた。快適なソリューション開発のようには感じられませんが、このポリシーは私のアプリケーションの 1 つを壊しました。つまり、私の場合はポリシーを無効にすることが正しいことです。


最終編集:

イゴールは私に正しい答えをくれました。これらのポリシーを回避するために私がしなければならなかったpublisherPolicyのは、正しい構成セクションの設定を使用することだけでした:

0 投票する
0 に答える
1538 参照

c# - .NET プロジェクトのアセンブリ ファイルのバージョン依存関係の削除、または「dll の古いバージョンとの下位互換性」

プロジェクトのアセンブリ互換性の問題で立ち往生しています。

1) アセンブリ バージョンを指定する .NET プロジェクトがあります。「大部分.小部分.ビルド部分.改訂部分」. 2) 次のビルドでは、アセンブリ バージョンがインクリメントされます。3) アセンブリ バージョンが更新されているが、変更されていないファイル (dll) が多数あります。4) 新しい「dll」ファイルは、同じ dll ファイルの古いバージョンと互換性がありません。

これをオンラインで解決するための詳細情報を取得しようとしました。

1) 発行元ポリシーの概念があり、古いバージョン番号を指定できます。2) すべてのクラスのプロジェクトに追加されるマニフェスト ファイル。現在のバージョンが利用できない場合に使用できる可能なバージョンの範囲を提供します。

私が正しいことをしているかどうかはわかりません。パブリッシャー ポリシー アプローチとマニフェスト ファイル アプローチの違いは何ですか。

「dll」の下位互換性は可能ですか?

0 投票する
1 に答える
641 参照

c# - パブリッシャー ポリシーのリダイレクトが機能しない

パブリッシャー ポリシー ファイルを使用してアセンブリのリダイレクトを学習しています。次のことを行いました。

  • 署名付きの Dependency という DLL があり、GAC に登録されています。

  • 登録時のアセンブリ バージョンは 1.0.0.1 です。

  • テスト用のクライアント(コンシューマー)を開発し、同バージョンを参考にビルドして1回実行しました。

  • 依存関係 DLL の AssemblyVersion を 1.0.0.2 に変更しました

  • 以下に示すように、発行者ポリシー ファイルを作成しました。

ここに画像の説明を入力

  • 新しいバージョンを GAC に登録しました
  • 以下に示すように、Al.EXE ライクを使用してポリシー アセンブリを生成します。

    D:\Test> al /link:policy.config /out:policy.1.0.Dependency.dll /keyfile:....\keyfile.snk /platform:x86

  • Consumer と Dependency の両方でのみ X86 構成を使用していることを確認しました

  • ポリシー アセンブリを登録した後でも、古いバージョン (1.0.0.1) がコンシューマーによって使用され、ポリシー構成のリダイレクトが行われませんでした。
  • Fusion ログ ビューアーを使用しようとしましたが、リダイレクトの失敗は見られませんでした

私が欠けているものを教えてください。前もって感謝します。