我需要Blend 4来调用一些初始化代码,然后它才能合理地显示我的应用程序,并且我正在使用Josh Smith的this approach来完成它。

我正在使用以下项目结构:

MainProgram
  -- Properties
     -- AssemblyInfo.cs (including the custom attribute)
  -- App.xaml
  -- HostWindow.xaml    (UserControls are embedded here)
  -- DesignTimeBootstrapperAttribute.cs

ViewsAssembly
  -- Lots of user controls

由于某些原因,每次构建后都不会调用设计时间 bootstrap (导致我的自定义标记扩展在Blend中引发异常和大量错误消息)。但是,在最初加载解决方案时会调用它,我不明白Blend在这里的行为方式。

我在做什么错,还是有另一种方法?

编辑:
我注意到进行一次完整的重建确实会每次都调用Bootstrapper。也许这可以作为一种解决方法,但我仍然想了解它。

最佳答案

您可以验证在重建后确实执行了主应用程序的程序集二进制文件,而该二进制文件不执行启动吗? (如果二进制文件不变,我希望Blend不会评估反射)。我也将尝试清洁解决方案,而不是勉强解决。

作为繁重的解决方法,您可以考虑在构建后事件中更改解决方案/项目文件(例如,添加空格),这将导致Blend重新加载解决方案并再次执行自定义的启动代码。

附带说明一下,我对VS XAML UI Designer进程(xDesProc)的经验表明,它并不总是能捕捉到重新构建后所做的更改,因此我必须使用任务管理器将其杀死以强制重新加载,而混合可能会发生sme。

关于c# - Blend不调用DesignTimeBootstrapper,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15088016/

10-11 15:58