本当にこれが意味をなされることを願っています。私は、私が考えることができるすべてについて、運がなくても試しました。分岐コードと競合するアセンブリバージョン....これに対処するには?
は、ここに私の状況です:いくつかのチームはに貢献し、単一のコードベースがありました
...しかし、目標とチームが発散し始めたの焦点を当てています。何ヶ月も前に、コードを分岐することに決めました。
バージョン バージョンB
事がAとBは、独立した変化の数ヶ月後に、今異なっている一方で、ある - 彼らはまだ私の問題、クラス/インタフェースへのより適切な、ロジックの多くを共有し、 /オブジェクト名と名前空間。私たちはバージョンB.バージョンBの内側に何かを活用しようとしているバージョンのA.と連携
は、外部ライブラリを使用して、この非常に複雑で、困難な、時間のかかる事を書いた - しかし、今それが聞こえた
素晴らしい取り組んでいます簡単です。バージョンBには、このロジックをすべてカプセル化したプロジェクトがあり、アセンブリ(.dll)への参照を追加するだけです。しかし、アセンブリはバージョンBで見つかった他の多くのプロジェクトに依存しています - つまり、バージョンAではALSOですが、AとBの数多くの違いのために失敗します。たとえば、私が追加したバージョンBのDLLは、iInterface1が文字列X - バージョンAでは同じ名前空間にiInterface1がありますが、既にEnum Xがあります。
すべてのDLLが/ binフォルダにコピーされてしまいます。プロジェクトBのアセンブリで使用される1つのバージョンをカプセル化します。私はAssemblyResolveイベントを聞いて、それを/ binのサブフォルダに配置しようとしましたが、それがどのように役立つのか理解できません。アセンブリを一度解決すると、再び起動しませんが、複数回リダイレクトする必要があります。
これらを両方ともGACに追加することは選択できません。しかし、それがそれを行う唯一の合理的な方法かもしれないと思う。
誰か私にある方向を教えてもらえますか? ILMergeは私がここで使うことができるものでしょうか?
私はあなたの痛みを感じます。分岐は地獄への道の第一歩です。 – DOK
分岐した後は、あなたの毎日の祈りをよく言います。そして、いや、あなたを助けません。どちらもうまくいきません。あなたdooooomedしています。あなたが新しいプロジェクトXに再利用したいコードを抽出できるようになるまで、バージョンAとバージョンBをリファクタリングしない限り、*クリーン*ソリューション(assemblyresolveのものは私を冷静にし、GACはそれほど優れていない)プロジェクトXをバージョンAとバージョンBの両方で使用できるように維持する必要があります。 – stmax