0

私のプロジェクトはリソース ファイル エディターです。appdomain にアセンブリを読み込み、そこからすべての .resources ファイルを作成します。次に、Resgen.exe を使用して、これらの .resources ファイルを .resx ファイルに変更します。

.resx ファイルが作成されると、Windows フォーム デザイナーが呼び出され、.resx ファイルからフォームが作成されます。次に、ユーザーはそれらのフォームを変更できます。次に、それらは al.exe (アセンブリ リンカ) で dll にコンパイルされます。

ある意味では、Visual Studio をインストールしなくても使用できるカスタム Visual Studio デザイナーのようなものです。

My problem is that when the designer try to draw a form that inherited from a 
base form that is in another project, it put all the components in the upper left
corner of the form.

/---------------------------------------------------------------- --------------------------------------------/

例を挙げて説明します:

A と B の 2 つのプロジェクトがあります。B にはフォームがあります。A は B から自分のフォームを継承しました。プロジェクト A のアセンブリをロードすると、デザイナーはプロジェクト B から基本フォームを見つけることができず、フォームを正しく作成できません。

通常のフォームは次のように宣言されます。

public class AboutForm : System.Windows.Forms.Form

プロジェクト A のフォームは次のように宣言されます。

public class ExtractForm : AlexandriaR2P.UI.BaseExtractForm

AlexandriaR2P.UI.dll が私のプロジェクト B の場所

/---------------------------------------------------------------- --------------------------------------------/

/---------------------------------------------------------------- --------------------------------------------/

リフレクションによってアセンブリからリソース ファイルを作成しています。アセンブリがフォームの別のプロジェクトへの参照を持たない場合、すべて正常に機能します。

しかし、アセンブリが別のアセンブリに依存してフォームを作成している場合、正しく読み込まれません。すべてのコンポーネントが左上隅にロードされます。(継承された形式)

resx ファイルで、私はこれを見つけました:

  <data name="&gt;&gt;m_SendControl.Type" xml:space="preserve">
      <value>AlexandriaR2P.UI.BaseSendControl, AlexandriaR2P.UI, Version=5.2.0.13, Culture=neutral, PublicKeyToken=null</value>
  </data>

ここで、 AlexandriaR2P.UI は私のdll : AlexandriaR2P.UI.dll であり、デザイナーが正しくロードできず、フォームがうまく描画されていないと思います。

dll のすべてのリソース ファイルが同じフォルダーにあり、参照されているアセンブリが AppDomain に読み込まれていることを確認しましたが、それでも問題が発生します。

ありがとう!

フォームを作成するときにデザイナーから返されるエラーはありません... 必要な情報が見つからないため、コンポーネントを 0,0 にロードするだけです。

また、リソースを al.exe (AssemblyLinker) でコンパイルすると、フォームがすべて変形します。

4

0 に答える 0