visual-studio - Visual Studio 设计/评估/项目加载 MSBuild 条件
问题描述
BuildingInsideVisualStudio
MSBuild 属性允许根据Visual Studio 中是否发生特定构建来编写条件:
<MyProp Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">Foo</MyProp>
但是,在评估/设计/项目加载期间未设置该属性,因此例如在 ccproj 中,这样的东西不起作用:
<Foo Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">2.9</Foo>
<ProductVersion>$(Foo)</ProductVersion>
是否有BuildingInsideVisualStudio
等效的 VS 评估/设计/项目负载?
编辑 复制步骤:
- 在 Visual Studio 2017 中,创建一个新
Azure Cloud Service
项目。 - 关闭 VS 中的解决方案并
ccproj
在文本编辑器中打开,然后将行<ProductVersion>2.9</ProductVersion>
(您可能有不同的版本)替换为:
.
<Foo Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">2.9</Foo>
<Foo Condition=" '$(BuildingInsideVisualStudio)' != 'true' ">9.9</Foo>
<ProductVersion>$(Foo)</ProductVersion>
- 在 Visual Studio 中打开解决方案,您将收到警告:
此项目与较新版本的 Microsoft Azure 工具相关联。您必须下载工具并重新加载项目才能继续。
换句话说,在项目加载期间,BuildingInsideVisualStudio
已评估为 false,因此不支持的 9.9ProductVersion
已解决。
解决方案
因此,例如在 ccproj 中,这样的事情是行不通的:
实际上它对我来说效果很好,所以我想如果房产的位置会产生这种差异。我在每个可能的地方都尝试过,但无法重现相同的问题。
根据您的not set during evaluation/design/project-load
,您是否使用该属性作为项目节点的条件,如下所示:
<Project... Condition="$(BuildingInsideVisualStudio) " ...>
...
</Project>
仅在这种情况下,该属性无法工作,因为 Project 节点本身不支持Condition
. 我们必须像使用它inside <Project>
一样使用它到 PropertyGroup,ItemGroup,Property...
是否有 VS 评估/设计/项目加载 BuildingInsideVisualStudio 等价物?
不清楚您的意思,但如果您的意思是使用项目内容之外的属性,如下所示,恐怕答案是否定的。
<Project Condition="'$(BuildingInsideVisualStudio)' == 'true'">
content of project if builds in vs
</Project>
<Project Condition="'$(BuildingInsideVisualStudio)' == 'false'">
content of project if builds not in vs
</Project>
如果我有任何误解,请随时告诉我,预计会有更多详细信息来重现该问题:)
编辑:
通过 Ohad 的详细信息,我重现了这个问题。目前,该属性仅在构建过程开始时有效,只有在 VS 中构建BuildingInsideVisualStudio
时才会设置为 True ,但在 VS 中重新加载或打开时不会设置为 True,这会导致问题。
但是我不知道是否存在类似的项目负载属性:LoadingInsideVisualStudio
。答案可能是否定的。
推荐阅读
- vb.net - 如何在没有 ElementID 的情况下自动填充 webbrowser 表单?
- django - 用于文件上传的 Django UpdateView 和 ModelForm 不起作用
- mobile - 使用 MobileFirst 的基于位置的推送通知
- mysql - 当我没有匹配的列时如何从其他表中获取特定 id 的结果
- javascript - 使用@public JsDoc 标记和@export 会导致警告
- sql - 选择替换其他列值的值
- excel - 遍历列表并为每个项目运行代码(VBA)
- wordpress - 使用 ACF 创建新的自定义帖子类型时更新帖子标题
- qlikview - Qlikview 滚动 52 周报告
- php - 在 POST 期间无限制地发送大量变量