我需要根据项目配置包含一个文件,尝试了MSBuild条件,但似乎无法正常工作
我已经创建了两个文件并编辑了.csproj并添加了以下声明
<b-container class="bv-example-row">
<b-row>
<b-col>1 of 3</b-col>
<b-col>2 of 3</b-col>
<b-col>3 of 3</b-col>
</b-row>
</b-container>`
无论我使用什么配置,我总是在项目中看到两个文件
答案 0 :(得分:0)
好,因此您必须在两个配置中都包含两个文件,但是可以有选择地在配置基础上选中“从构建中排除”选项。在解决方案资源管理器中右键单击文件,然后打开“属性”页面。您应该看到“从构建中排除”,您可以在选定配置中检查不需要的文件。
然后,当您更改配置时,解决方案资源管理器将(应该)显示一个添加了“无条目”图标的文件-但是,每个配置中显示的文件都会有所不同。
答案 1 :(得分:0)
无论我使用什么配置,我总是看到两个文件 项目
1。众所周知,解决方案资源管理器中的UI与.xxproj文件中的内容相对应。因此,当我编写如下内容时:
<ItemGroup>
<Content Include="TextFile1.txt" />
</ItemGroup>
VS将在解决方案资源管理器中显示TextFile1.txt
,即使该文件实际上不存在。
因此,当您使用上面的脚本时,它将显示两个文件。
2。我想让您感到困惑的是,为什么UI根据配置没有包含文件。请看一下这个similar issue,我同意 Andrey 的观点,ItemGroup
也受到了影响,但是这种行为。(加载项目时条件不起作用)
3。我认为,似乎VS加载项目文件并在Solution Explorer中显示UI时,它无法从开关盒访问Configuration值。卸载我的项目时,开关盒处于禁用状态,显示为灰色,如果我右键单击该项目以重新加载它,则由于现在开关盒已被移除,因此有关配置的条件在加载时无法很好地工作。
我还测试了此脚本,这三个文件现在显示在解决方案资源管理器中:
<ItemGroup>
<Content Include="TextFile1.txt" Condition="$(RootNamespace)=='App'"/>
<Content Include="TextFile2.txt" Condition="$(RootNamespace)=='AppApp'"/>
<Content Include="TextFile3.txt" Condition="$(RootNamespace)=='AppAppApp'"/>
</ItemGroup>
因此,很明显在加载期间会忽略条件。根据{{3}},这是设计使然。
并且由于在这种情况下条件不起作用,因此您可能必须在属性窗口中手动设置其属性。即:在发布配置期间,将Package.release.appxmanifest
的构建操作设置为AppxManifest
,而将Package.debug.appxmanifest
的构建操作设置为None
。
希望它会有所帮助,如果我误解了任何内容,请随时纠正我:)
更新1:
在github中找到一个Note in remarks,并从davkean获得很好的提示。
新项目系统当前使解决方案树脱离“活动”配置。 旧的项目系统通过忽略条件来驱动解决方案树。它们都有优点/缺点。