如何在csproj中检测XAML Designer模式并按需引入设计资源库?
判断Visual Studio XAML设计器模式并引入设计资源的MSBuild配置步骤
你预期的思路是对的,但需要修正Condition里的判断属性——MSBuild层面没有$(XamlDesignerMode)这个内置属性,要使用专门的设计时构建属性来实现需求,具体步骤如下:
- 右键你的WPF项目,选择「编辑项目文件」,打开
.csproj文件 - 在文件中添加以下ItemGroup配置(二选一即可):
针对传统非SDK项目,使用$(DesignTimeBuild)属性:
针对较新的SDK-style项目,推荐使用<ItemGroup> <ProjectReference Condition=" '$(DesignTimeBuild)' == 'true' " Include="..\DesignerResource\DesignerResource.csproj" /> </ItemGroup>$(IsDesignTimeBuild)属性:<ItemGroup> <ProjectReference Condition=" '$(IsDesignTimeBuild)' == 'true' " Include="..\DesignerResource\DesignerResource.csproj" /> </ItemGroup> - 保存项目文件,重新加载项目即可
补充说明:$(XamlDesignerMode)是WPF运行时层面的属性,只能在代码中通过DesignerProperties.GetIsInDesignMode()获取,无法在MSBuild编译阶段用来判断环境。而$(DesignTimeBuild)/$(IsDesignTimeBuild)是Visual Studio触发设计时构建时自动设置的MSBuild属性,刚好能满足你「仅在XAML设计器模式下引入资源库」的需求。
内容的提问来源于stack exchange,提问作者wpf
相关产品推荐
相关产品推荐

