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.

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

我将举例说明:

我有 2 个项目:A 和 B。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