Visual Studio不显示解决方案资源管理器中目标的引用

时间:2017-08-03 14:03:01

标签: c# visual-studio msbuild intellisense

这是我的.csproj的一部分:

<Project DefaultTargets="Build" InitialTargets="MyTarget" xmlns="...">
<Target Name="MyTarget" DependsOnTargets="Include_Ver1;Include_Ver2"/>

 <Target Name="Include_Ver1" Condition="...">
    <ItemGroup>
      <COMReference Include="Ref">      
         1st_Version
      </COMReference>
    </ItemGroup>
  </Target>

 <Target Name="Include_Ver2" Condition="...">
    <ItemGroup>
      <COMReference Include="Ref">      
         2nd_Version
      </COMReference>
    </ItemGroup>
  </Target>

我可以正确使用库函数和项目构建,但引用不会出现在visual studio解决方案资源管理器中的“References”块中。如何在Targets中强制Intellisense解析引用?

2 个答案:

答案 0 :(得分:1)

尝试使用不同的引用和下面的hintpath,特定的版本节点元素。确保* .csproj不能只在SVN等任何版本控制系统下编写。

 <ItemGroup>
    <Reference Include="Microsoft.CSharp" />
        <Reference Include="Microsoft.Owin, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
          <SpecificVersion>False</SpecificVersion>
          <HintPath>..\..\Microsoft.Owin.dll</HintPath>
        </Reference>
    </ItemGroup>

答案 1 :(得分:1)

VS没有显示它们,因为解决方案资源管理器基本上显示了解析项目文件后得到的内容。解析!=执行,因此在目标中添加的引用不会被视为从未执行过 - 这是有道理的,VS无法猜测目标是否会被执行,并且它不能只是开始执行随机构建来确定引用是否将被添加。

你真的需要一个目标吗? ItemGroups也有条件,也许这对你来说已经足够了吗?

<ItemGroup Condition="...">
  <COMReference Include="Ref">      
     1st_Version
  </COMReference>
</ItemGroup>