C#csproj文件“选择”元素用于程序集HintPaths

时间:2016-04-07 15:02:23

标签: c# reference .net-assembly csproj

是否可以在引用提示路径上使用Choose / When / otherwise元素?

这样的事情:

<ItemGroup>
  <Reference Include="SharedLib...">
<SpecificVersion>False</SpecificVersion>
<Choose>
  <When Condition="Exists('..\..\SharedLib\bin\Debug')">
        <HintPath>..\..\SharedLib\bin\Debug\SharedLib.dll</HintPath>
  </When>
  <Otherwise>
         <HintPath>.\SharedLib.dll</HintPath>
  </Otherwise>
</Choose>
  </Reference>
</ItemGroup>

但是我得到的错误是......必需属性“Include”在元素“ItemGroup”中是空的或缺失

其他尝试/版本产生了类似的错误,例如......“选择”项目元数据名称是保留的,无法使用。

这让我觉得我不能使用ItemGroup元素的“Choose”元素INSIDE。

我欢迎澄清。请参阅附带的错误示例。 Visual Studio csproj Errors when loading project

1 个答案:

答案 0 :(得分:0)

我认为你不能只在选择中放置HintPath。您必须将整个ItemGroup放在When和Other中。像这样:

<Choose>
  <When Condition="Exists('..\..\SharedLib\bin\Debug')">
    <ItemGroup>
      <Reference Include="SharedLib...">
        <SpecificVersion>False</SpecificVersion>
        <HintPath>..\..\SharedLib\bin\Debug\SharedLib.dll</HintPath>
      </Reference>
    </ItemGroup>
  </When>
  <Otherwise>
    <ItemGroup>
      <Reference Include="SharedLib...">
        <SpecificVersion>False</SpecificVersion>
        <HintPath>.\SharedLib.dll</HintPath>
      </Reference>
    </ItemGroup>
  </Otherwise>
</Choose>