以下に示すコードは完璧ではありませんが、私が維持しているコードの状態を実際に表していることを理解しています。私の質問は、このコードを構造化する正しい方法に関してではありません。なぜ、このコードは以前のバージョンのVS 2017(2週間前のようなもの)で動作していたのですか?私は、この問題が対処されるVSのバグか、これをコードベースで解決する必要があるかどうかを判断しようとしています。VS 2017リリース15.5.1 - System.Net.Httpへのプロジェクト参照未解決
このプロジェクトのVS2017リリース15.4.5(およびVS2015)では適切な参照がありますが、VS2017 15.5.1または15.5.2では適切な参照がありません。
問題を示すこのサンプルソリューションには、1つのプロジェクトしかありません。以下 は、プロジェクトファイルです:
<?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>
プロジェクトは、唯一のクラスが含まれています
using System.Net.Http;
namespace Reference_Issue
{
public class Class1
{
private HttpRequestMessage test;
public Class1()
{
test = new HttpRequestMessage();
}
}
}
とpackage.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.Net.Http" version="2.0.20126.16343" targetFramework="net45" />
</packages>
私は個人的には電話をしません非PackageReferenceは適切な参照であり、依存関係を欠く可能性があります。あなたは一人ではなく、他の人にも似ています。https://github.com/dotnet/corefx/issues/25757まずPackageReferenceを使ってみてください。うまくいきません.GitHubリポジトリに報告してください。 –
@LexLi - 私が働いている会社がこのようなことを参照している理由があります。参照タイプを変更することは、VSをアップグレードしないだけで、この時点ではより大きな問題になります。私はこれがバグか、これが意図的なのか不思議なので、今後のクリティカルパスに期待を置くことができます。 –
私はちょうど適切なpackage.configを追加しました。私は最初の投稿でそれを忘れていました –