【问题标题】:Exclude a usercontrol from being compiled?从编译中排除用户控件?
【发布时间】:2015-11-27 12:44:28
【问题描述】:

我想创建一个类库,其中包含我创建的所有应用程序的自定义样式(因此我只需导入 dll 并应用所有样式)。出于设计目的,我想在我的“主题”项目中有一个用户控件(所以我对我设计的所有控件都有一个视觉表示)。但是最后这个用户控件不应该编译并打包到dll中。

我已经尝试将构建操作设置为 none,但它找不到编译后的 g.i.cs 文件中的方法 (InitializeComponent())(很明显)。

但是我该如何防止呢?

所以基本上我的项目是这样的:

我的主题

  • MyThemePreview.xaml
  • MyTheme.xaml Styles
  • 样式
    • Style_Button.xaml
    • Style_TabControl.xaml
    • ...

【问题讨论】:

  • 您是否也将 MyThemePreview .csBuild Action(= 隐藏代码)设置为 None
  • 您是否考虑过使用 xamlc.exe 手动编译代码?
  • @Slyvain Omg ...谢谢你解决了我的问题。完全忘记了这一点。也许你可以发布一个答案。所以我可以接受。
  • 我很高兴,刚刚发布了答案以及额外的信息以防万一。

标签: c# wpf xaml user-controls


【解决方案1】:
  • BuildAction 设置为无,就像您所做的那样
  • MyThemePreview.xaml.cs 中使用指令#if NONEXISTENT_CONSTANT .... #endif - 如果没有#define NONEXISTENT_CONSTANT#if#endif 之间的代码将不会被编译,并且设计器仍然可以工作。如果您想使用代码,只需定义该常量即可。
  • ... 或者,如果您从不创建 MyThemePreview 对象,只需删除 MyThemePreview.xaml.cs 中的所有代码。设计师仍然可以工作。

https://msdn.microsoft.com/library/4y6tbswk(v=vs.100).aspx

【讨论】:

    【解决方案2】:

    您还应该将 MyThemePreview .cs 文件后面代码的 Build Action 设置为 None

    如果你想再次编译这个文件,你应该将MyThemePreview.xamlBuild Action设置为Page,将MyThemePreview.cs设置为Compile

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      相关资源
      最近更新 更多