2017-11-10 10 views
0

新しいプロジェクトを開始し、.netcore2コンソールアプリを選択してください。 461を.NETにターゲットフレームワークを変更 あなたは示すように、.csprojファイルを編集して次の操作を行います。.net enumsで参照してください.net 4.7.1で動作します.net 4.6.1

<TargetFramework>net461</TargetFramework> 

netcoreは、年間のフルフレームワーク上で走っています。驚きはありません。今すぐ新しいプロジェクト:.net標準2.0クラスライブラリを追加してください。そのライブラリのご.csprojは今、あなたのアプリのコンソールから

<TargetFramework>netstandard2.0</TargetFramework> 

参照この標準2アセンブリを含める必要があります。コンソールアプリケーションのためのあなたの.csprojファイルは現在、読み取ります

<PropertyGroup> 
    <OutputType>Exe</OutputType> 
    <TargetFramework>net461</TargetFramework> 
    </PropertyGroup> 

    <ItemGroup> 
    <ProjectReference Include="..\LibStandard\LibStandard.csproj" /> 
    </ItemGroup> 

あなたの.NETの標準で2ライブラリを列挙を作成
namespace LibStandard 
{ 
    public class Class1 
    { 

    } 

    public enum TestEnum 
    { 
     One, Two 
    } 

} 

使用はコンソールアプリで列挙

class Program 
{ 
    static void Main(string[] args) 
    { 
     TestEnum t = TestEnum.One; 
     Console.WriteLine("Hello World!"); 
    } 
} 

作品と述べました。クール。次に、コンソールアプリケーションのターゲットフレームワークを.net471に変更します。そう

<PropertyGroup> 
    <OutputType>Exe</OutputType> 
    <TargetFramework>net471</TargetFramework> 
    </PropertyGroup> 

    <ItemGroup> 
    <ProjectReference Include="..\LibStandard\LibStandard.csproj" /> 
    </ItemGroup> 

、今あなたがビルドでこのエラーになりますように:

2>Program.cs(10,13,10,21): error CS0012: The type 'Enum' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. 
2>Program.cs(10,26,10,34): error CS0012: The type 'Enum' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. 
2>Program.cs(10,35,10,38): error CS0012: The type 'Enum' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. 
2>Done building project "ConsoleOne.csproj" -- FAILED. 

私は(nuget経由)を追加しようとしたコンソールアプリケーションプロジェクトに2.0.0を.netstandardが、それは解決しません問題。

<PropertyGroup> 
    <OutputType>Exe</OutputType> 
    <TargetFramework>net471</TargetFramework> 
    </PropertyGroup> 

    <ItemGroup> 
    <PackageReference Include="NETStandard.Library" Version="2.0.0" /> 
    </ItemGroup> 

    <ItemGroup> 
    <ProjectReference Include="..\LibStandard\LibStandard.csproj" /> 
    </ItemGroup> 

これまで試していない方は、1.x標準の461で.net標準ライブラリをいつでも実行できます。しかし、ネットスタンダード2と471では同じことはできません。また、新しいコンソールアプリ(デスクトップアプリケーションのフルnetcore 471)を追加することもできます。同じ結果。 .netcoreコンソールアプリで起動し、.netfxをターゲットにするか、または.netコアなしで起動すると同じエラーが発生します。

私は困惑。

サンプル溶液:追加_HasReferenceToSystemRuntime

<PropertyGroup> 
    <OutputType>Exe</OutputType> 
    <TargetFramework>net471</TargetFramework> 
    <_HasReferenceToSystemRuntime>true</_HasReferenceToSystemRuntime> 
    </PropertyGroup> 

は、Visual Studioは、まだ少しは、.NETを扱う混同ようです:SAMPLE

+0

https://github.com/dotのようなGitHubディスカッションに参加してくださいnet/standard/issues/514 –

+0

がhttps://github.com/dotnet/corefx/issues/25177に追加されました – AppLS

答えて

関連する問題