0

基本的に、すべてのプロジェクトで使用するいくつかの共通機能を備えた小さなライブラリを開発しました。いくつかの政治的な理由により、そのライブラリの一般的な名前 (名前空間とアセンブリ名を含む) を選択できません。通常、名前空間の場合は次のように、企業の名前を含める必要がありますEnterprise.ProjectName.XXX.YYY

今のところ、ライブラリのコピーを作成してから、Visual Studio を使用して手動で名前空間の名前を変更し、最後に全体を再コンパイルしています。したがって、私の質問は次のとおりです。アセンブリを入力として受け取り、アセンブリ名だけでなくすべての名前空間の名前を からMyLibrary.XXX.YYYに変更する小さなプログラムを作成することは可能Enterprise.ProjectName.XXX.YYYですか?

従うべき手順は何ですか?

[編集]

アセンブリを自動的に生成するのは大変な作業のようです。これまでと同じように、リシャープや CTRL+ALT+F を使用します。答えてくれてありがとう...

4

2 に答える 2

3

Mono のCecilプロジェクトを使用して、アセンブリを逆アセンブルし、各型を検査し、新しい名前空間で型の名前を変更または再作成し、結果のアセンブリを生成できます。

そうは言っても、コードベース内でネームスペースの名前を正しく変更できる Resharper のようなツールを使用する方が簡単かもしれません。

于 2013-06-05T17:17:15.653 に答える
1

いくつかのオプション:

  1. ライブラリのソース コード全体を新しいプロジェクトにコピーする場合は、Resharper などのリファクタリング ツールを使用して「名前空間を調整する」ことができます。これは非常に迅速で安全なリファクタリングです。

  2. 内部的に名前が付けられたアセンブリの出荷を回避する必要がある場合は、 ILMergeを使用して、ビルド後のステップで内部アセンブリを「非表示」にすることができます。これは、バイナリ出力ディレクトリ内の最終的なアセンブリ名の認識の問題である場合に実行可能です。

  3. 内部ライブラリが他のサードパーティの依存関係と変わらないことを説明することにより、政治レベルで問題に対処してください。そうすれば、ネーミングはもはや問題ではありません。これにより、このライブラリのソース コードを複数のクライアントに配布する場合、他の問題が解決される可能性があります。「共有」コードの完全な所有権を各クライアントに与えていないことが明確になるからです。そうしないと、他のクライアントのプロジェクトでその「共有」コードを使用することは許可されていないと主張する可能性があります。

于 2013-06-05T17:23:43.333 に答える