C# VS 2017版本15.5.1-未解析对System.Net.Http的项目引用
我理解您在下面看到的代码并不完美,但它实际代表了我正在帮助维护的代码状态。我的问题不是关于构造此代码的正确方式,而是为什么此代码在VS2017的早期版本(如2周前)中有效,以及为什么现在无效。我试图确定这个问题是VS的一个bug,它将被解决,还是需要在我们的代码库中解决 本项目在VS 2017版本15.4.5(以及VS 2015)中有适当的参考,但在VS 2017 15.5.1或15.5.2中没有 此示例解决方案显示问题只有一个项目。 以下是项目文件:C# VS 2017版本15.5.1-未解析对System.Net.Http的项目引用,c#,visual-studio,C#,Visual Studio,我理解您在下面看到的代码并不完美,但它实际代表了我正在帮助维护的代码状态。我的问题不是关于构造此代码的正确方式,而是为什么此代码在VS2017的早期版本(如2周前)中有效,以及为什么现在无效。我试图确定这个问题是VS的一个bug,它将被解决,还是需要在我们的代码库中解决 本项目在VS 2017版本15.4.5(以及VS 2015)中有适当的参考,但在VS 2017 15.5.1或15.5.2中没有 此示例解决方案显示问题只有一个项目。 以下是项目文件: <?xml version="1.0
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<OldToolsVersion>3.5</OldToolsVersion>
<IsWebBootstrapper>true</IsWebBootstrapper>
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<Install>true</Install>
<InstallFrom>Web</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<ProjectGuid>{B3FE0477-3F25-4D78-9618-2DD0889C0194}</ProjectGuid>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
<Visible>False</Visible>
<ProductName>.NET Framework 2.0 %28x86%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
<Visible>False</Visible>
<ProductName>.NET Framework 3.0 %28x86%29</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="System.Net.Http">
<HintPath>..\..\packages\System.Net.Http.2.0.20126.16343\lib\net40\System.Net.Http.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.WebRequest">
<HintPath>..\..\packages\System.Net.Http.2.0.20126.16343\lib\net40\System.Net.Http.WebRequest.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
和package.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.Net.Http" version="2.0.20126.16343" targetFramework="net45" />
</packages>
我认为这与15.5中的错误相对应:
我个人认为任何非PackageReference都不是正确的引用,因为它可能会丢失依赖项。正如其他人所面临的类似情况一样,您并不是唯一一个尝试先使用PackageReference的人,如果它不起作用,请向GitHub repo报告。@LexLi-完全同意,我所在的公司之所以以这种方式引用东西,是有原因的,在这一点上,更改引用类型比不升级和不升级更重要。我只是想知道这是一个bug,还是故意的,这样我们就可以设定对未来关键路径的期望。我刚刚添加了正确的package.config,我忘记了,在最初的后租赁审查中,需要实际的依赖项,@LexLi-.NET 4.5-无依赖项谢谢!我相信这实际上是VS如何处理项目引用提示的一个缺陷。如果删除该提示,它将起作用。但是如果你真的使用了这些提示,我想你会被困在修复之前。如果你愿意遵循,我实际上已经向微软提交了这个:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.Net.Http" version="2.0.20126.16343" targetFramework="net45" />
</packages>