【问题标题】:C# exclude complete form / usercontrol by using compiler constantsC# 使用编译器常量排除完整的表单/用户控件
【发布时间】:2019-08-22 02:13:56
【问题描述】:

我想在我的项目中排除/包含一个完整的表单。但是当我添加所需的 #if CONST#endif 时,编译器会抱怨资源名称可能会出错。

警告 MSB3042:在文件“Form1.cs”的条件编译指令中找到命名空间或类定义。这可能会导致资源“Form1.resx”的清单资源名称选择不正确。

这是什么意思?

我该如何解决?

【问题讨论】:

    标签: c# winforms user-controls


    【解决方案1】:
    • 说明: 一个普通表单(从模板创建)由 2 个 .cs 文件和一个 .resx 文件组成。 通过消除 Form1 类,您可以“孤立”这些资源。

    • 解决方法:

      1. 制作一个没有资源文件的更简单的表单。
      2. 使用#else 标记为Form1 类创建空存根
      3. 忘记这个想法,只消除程序其余部分使用表单的(少数)点。

    我赞成 3,您期望删除表单有什么好处?

    【讨论】:

    • 程序会有两个版本。出于安全原因,部署版本中应排除某些表单(和功能)。所以 3) 对我来说不是解决方案,因为 Form 仍然存在于 .exe 中。
    • Ps:解决方法 2) 解决了所有问题。没有更多的警告,即使是设计师使用存根(重新打开时)。
    【解决方案2】:

    如果您没有设置图像并且不使用 resx 进行翻译(即您的表单不可本地化),请尝试删除您的 Form1.resx。

    【讨论】:

      【解决方案3】:

      移动您的#if CONST / #endif 区域,使其位于包含Form1.cs 中部分类的全部内容的派生表单类声明中。默认构造函数将接管,您的警告将消失。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-02
        • 2014-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-03
        相关资源
        最近更新 更多