新しいプロジェクトを開始し、.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
https://github.com/dotのようなGitHubディスカッションに参加してくださいnet/standard/issues/514 –
がhttps://github.com/dotnet/corefx/issues/25177に追加されました – AppLS