3

さて、私は自分で開発したアプリケーションを持っています。それをプロジェクトAと呼びましょう。共有ライブラリに入れたMicrosoft .NET Frameworkにない関数、これをMyLibと呼びましょう。

現在、プロジェクトB、C、D、EもMyLib(多くのプロジェクト)を使用しています。私の「MyLib」は、4〜5年前からゆっくりと追加されています。

私が今抱えている問題は、MyLibが巨大であるということです。ええと、5MBですが、私はそれを巨大と呼んでいます。

私が持っている質問は、MyLibを使用してプロジェクトをコンパイルし、MyLibから未使用の関数やクラスなどを削除するにはどうすればよいですか?MyLibの1つの小さな静的関数を使用するHelloWorldアプリが、6MBのHelloWorld.exe(ilmergeの後)になるのはかなり残念です。

FOSS>Payware。

4

4 に答える 4

3

探しているのはMonoLinkerで、そのソースコードはGitHubにあります。スタンドアロンツールはあまり使用されませんが、iPhoneコンパイラの1つのステップであるため、ライブラリは堅固であると思います。

プログラムに使用しているライブラリのすべての機能を常に使用するとは限らないためです。リンカを使用することで、ユーザーに配布する必要のあるもののサイズを減らすことができます。

于 2011-02-27T16:43:45.253 に答える
0

ライブラリ関数を小さなセクションにグループ化する必要があるようです。面倒なスイスアーミーナイフを取るのではなく。細かく分割してください。

「ベストプラクティス」は、mylibを単体テストでカバーし、それらのクラスをゆっくりとリファクタリングすることです。

「ベストプラクティス」はそれらを分割します。.netフレームワークを見てください。巨大なdot.dllは1つではありません

于 2011-02-27T16:27:10.617 に答える
0

.Netフレームワーク自体からいくつかの手がかりを取ります。MyLibに多くのテキストヘルパーオブジェクトと関数があり、多くのWebヘルパーオブジェクトと関数がある場合、それらは2つの別々のプロジェクトと名前空間に分割されます。

もちろん、気になるのでお勧めします。個人的には、少し大きめのDLLよりもはるかに大きなペットのおしっこを持っています。

VSの実行が遅くなると言っているので、DLLだけでなく、プロジェクトMyLibを含めていることを意味していると思います。私はこれをすぐにやめます。MyLibのビルドを実行し、DLLへの参照を含めるだけです。

于 2011-02-27T16:28:50.563 に答える
0

AFAIK、苦痛を伴う方法しかありません。ライブラリを機能的な部分に分割します。これは、MyLibを消費し、適切な新しい参照を追加するさまざまなプロジェクトを通過することを意味しますが、他の方法はわかりません。そして、それはトリッキーな部分でもあります。それらの機能ユニットの境界を決定することです。注意しないと、(つまり)以前は1つしかなかった、6つの異なるアセンブリを参照することになり、途中で事態が悪化する可能性があります。

この道を進む前に、プロジェクトで使用するものと使用しないものを慎重評価してください。

于 2011-02-27T16:35:45.543 に答える