【问题标题】:The element <When> benerath element <Choose> is unrecognized元素 <When> 和元素 <Choose> 无法识别
【发布时间】:2020-01-25 04:40:38
【问题描述】:

美好的一天,我尝试在工作中卸载和加载项目。

错误是这样的

元素下面的元素无法识别

我在link 中看到了和我一样的问题。但它没有任何解决方案。

<Target>

<Choose>
      <When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
        <ItemGroup>
          <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
        </ItemGroup>
      </When>
      <Otherwise>
        <ItemGroup>
          <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework">
            <Private>False</Private>
          </Reference>
        </ItemGroup>
      </Otherwise>
</Choose>
</Target>

我尝试将&lt;Choose&gt;&lt;/Choose&gt; 放在目标之外,但仍然没有运气。任何人都知道如何解决此问题。

  • Visual Studio 2017
  • Windows 10
  • .NET 4.5 框架

【问题讨论】:

  • 项目类型是什么? C#单元测试项目还是什么? I tried putting the &lt;Choose&gt;&lt;/Choose&gt; outside of the target but still no luck. 我刚试过,但它可以工作,你能展示一下你把 放在目标之外之后的脚本是什么样子的,以便我可以重现它并提供帮助:)
  • stackoverflow.com/questions/45215736/… 的可能重复项(但未将答案标记为已接受,因此不会标记为重复项)
  • 如果你需要在目标中使用选择/何时/其他,有github.com/microsoft/msbuild/issues/2056。前段时间我为它进行了概念验证,但在新的主要版本 msbuild 之前它不会进入
  • 嗨Pakyu,这个问题解决了吗?如果我的回答有助于解决您的问题,您可以考虑将其标记为答案,请参阅this。如果问题仍然阻碍您,请随时与我联系 :)
  • @LanceLi-MSFT 我解决了这个问题,我们确实有一个 git 存储库,所以我所做的就是从最新版本中恢复我的 csproj 的更改。对不起

标签: .net visual-studio xamarin msbuild


【解决方案1】:

最简单的方法是删除&lt;Target&gt;&lt;/Target&gt;。见official document的例子:

<Project  xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
  <PropertyGroup>
    ...
  </PropertyGroup>
  <Choose>
    <When Condition=" '$(Configuration)'=='debug' ">
      <ItemGroup>
        ...
      </ItemGroup>
    </When>
    <When Condition=" '$(Configuration)'=='retail' ">
      <PropertyGroup>
        ...
      </PropertyGroup>
    </When>
    <Otherwise>
        ...
    </Otherwise>
  </Choose>
  <Target Name="Test">
    ...
  </Target>
</Project>

所以正确的级别应该是:

----Project
------Choose
--------When
------Target

choose 标记应与target 处于同一级别。所以你得到第一个错误The element &lt;When&gt; beneath element &lt;Choose&gt; is unrecognized。而且我认为在将choose 标签放在Target 之外之后仍然出现问题的原因是您没有将选择标签及其内容(何时...)复制到一起。然后你可能会得到像The element &lt;Target&gt; beneath element &lt;Choose&gt; is unrecognized 这样的错误。

解决此问题的简单方法是删除&lt;Target&gt; and &lt;/Target&gt;,然后您可以重新加载项目文件。如果我有什么误解,请随时告诉我:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多