这是我的.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解析引用?
答案 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>