我们大量使用DesignTime
数据并将它们从发布版本中排除,
使用设计时数据最大化可视化设计器的使用在最底部有一个部分“从生产构建中排除设计时数据”,它可以很好地满足我们的要求。
摘自以上链接:
从生产构建中排除设计时数据 如果小心处理,设计时代码不会对生产应用程序造成损害(因为它不在运行时执行),但会排除此代码和所有相应的资产(例如图像)从生产构建仍然是可取的。
为此,您需要通过以下步骤手动修改 CSPROJ 文件。在当前版本的 Visual Studio 2012 中没有其他方法可以做到这一点。
- 在解决方案资源管理器中右键单击要编辑的项目。
- 从上下文菜单中,选择卸载项目。
- 右键单击同一项目,然后选择编辑 [项目名称]。
- 找到要排除的文件,并为每个文件添加一个条件到 CSPROJ 文件中的 XML 元素。例如,可以使用下面显示的代码在发布模式下排除 DesignFriendsService。
- 关闭 CSPROJ 文件。
- 在解决方案资源管理器中右键单击已卸载的项目,
并选择重新加载项目。
<Compile Include="Design\DesignRssService.cs"
Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "/>
可以在所有设计时文件上设置此条件,包括图片和其他资产。排除的项目在解决方案资源管理器中仍然可见,但它们不会包含在最终的二进制文件中。事实上,如果你在排除 DesignRssService 之后构建解决方案,你会在 ViewModelLocator 中得到一个编译错误。
您必须将使用 DesignRssService 的代码行包含在预编译器指令中,如下所示:
if (ViewModelBase.IsInDesignModeStatic)
{
#if DEBUG
SimpleIoc.Default.Register<IRssService, Design.DesignRssService>();
#endif
}
else
{
SimpleIoc.Default.Register<IRssService, RssService>();
}