的Visual Studio不会在Solution Explorer中显示来自对象的引用
问题描述:
这里是我的.csproj的一部分:的Visual Studio不会在Solution Explorer中显示来自对象的引用
<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解决方案资源管理器中我如何强制目标中的Intellisense解析引用?
答
尝试用不同的参考文献及以下hintpath,特定版本节点elements.Make确保* .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>
答
VS不显示它们解决方案资源管理器基本上显示了解析项目文件后得到的结果。解析!=正在执行,因此添加到目标中的引用不会被看到,因为它从不执行 - 这是有道理的,VS无法猜测目标是否会被执行,它不能只是开始执行随机构建来判断引用将被添加。
你真的需要一个目标吗? ItemGroups也可以有条件,也许这对你已经足够了?
<ItemGroup Condition="...">
<COMReference Include="Ref">
1st_Version
</COMReference>
</ItemGroup>
如果所有条件都为false,则Visual Studio将显示带有警告标志(版本为0.0.0.0)的引用。 “选择”块效果很好,但此标签中的“标签”属性会引发错误(尽管Visual Studio尽可能显示该属性)。 我在我的vsix中使用了这个属性来进行.csproj操作,所以我需要更难的分析来确定从vsix生成的“Choose”块。从此[链接](https://msdn.microsoft.com/en-us/library/ms171468.aspx?f=255&MSPPError=-2147217396)设计时执行目标:我不明白,我应该如何编写目标视觉工作室。 –
要么你不使用目标,VS显示参考,要么使用目标,但VS不显示参考。没有其他办法(据我所知)。 – stijn