模板 10 和 netstandard 2.0
Template 10 and netstandard 2.0
不知模板10是否兼容netstandard2.0。我在下面列出了一个非常简单的库:
using Microsoft.EntityFrameworkCore;
using System;
using System.ComponentModel.DataAnnotations;
namespace TransactionModel
{
public class MyTransaction
{
[Key]
public Guid TransactionId { get; set; }
public string BankID { get; set; }
public string MerchantID { get; set; }
public DateTime TransactionDate { get; set; }
public string TransactionDescription { get; set; }
public float TransactionAmount { get; set; }
public string TransactionComments { get; set; }
}
public class TransactionContext : DbContext
{
public DbSet<MyTransaction> transactionBatch { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionBuilder)
{
optionBuilder.UseSqlite("Data source=transactions.db");
}
}
}
下面列出的库 csproj 文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netcoreapp2.0;netstandard2.0</TargetFrameworks>
<!--<TargetFramework>netstandard2.0</TargetFramework>-->
<RuntimeFrameworkVersion>2.0.3</RuntimeFrameworkVersion>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="microsoft.entityframeworkcore.Sqlite" Version="2.0.1" />
<PackageReference Include="microsoft.entityframeworkcore.tools" Version="2.0.1" />
</ItemGroup>
</Project>
我已经安装了软件包 Microsoft.EntityFrameworkCore.Sqlite 和 Microsoft.EntityFrameworkCore.Tools,然后添加迁移以成功构建数据库。
但是当我尝试引用 TransactionModel 时,编译器产生了一堆错误,但我认为这是主要错误:
“无法解析程序集或 Windows 元数据文件..”
我附上了我的 vs2017 解决方案的图片。我还没有在 T10 上编写任何代码,我刚刚创建了 T10 模板,引用了我的库,而 vs2017 产生了错误。如果我使用 UWP,我不会收到这样的错误...
所以我的问题是是否可以将 T10 与 EntityFrameworkCore 和 netstandard2.0 一起使用?有没有办法解决这个错误?
无法从 .NET Core 项目在模板 10 库上创建依赖项,因为模板 10 库是通用 Windows 库。当前版本的 Template 10 是这样。下一版本的 Template 10 也是如此。为什么?因为 Template 10 是为增强 UWP 应用程序开发而构建的库,因此需要 Windows 命名空间,如您所知,它不是 .NET Standard 的一部分。怎么会这样? Windows 命名空间永远不能是 cross-platform。也就是说,Windows 10(新版本)的基本接口不是从 Prism.Core 派生的,后者是一个 .NET Standard 库。这意味着导航界面和 MVVM 类 都是外部的,可以继承 side-stepping 模板 10。这回答了你的问题,我希望你能理解事物原样的技术原因。
不知模板10是否兼容netstandard2.0。我在下面列出了一个非常简单的库:
using Microsoft.EntityFrameworkCore;
using System;
using System.ComponentModel.DataAnnotations;
namespace TransactionModel
{
public class MyTransaction
{
[Key]
public Guid TransactionId { get; set; }
public string BankID { get; set; }
public string MerchantID { get; set; }
public DateTime TransactionDate { get; set; }
public string TransactionDescription { get; set; }
public float TransactionAmount { get; set; }
public string TransactionComments { get; set; }
}
public class TransactionContext : DbContext
{
public DbSet<MyTransaction> transactionBatch { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionBuilder)
{
optionBuilder.UseSqlite("Data source=transactions.db");
}
}
}
下面列出的库 csproj 文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netcoreapp2.0;netstandard2.0</TargetFrameworks>
<!--<TargetFramework>netstandard2.0</TargetFramework>-->
<RuntimeFrameworkVersion>2.0.3</RuntimeFrameworkVersion>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="microsoft.entityframeworkcore.Sqlite" Version="2.0.1" />
<PackageReference Include="microsoft.entityframeworkcore.tools" Version="2.0.1" />
</ItemGroup>
</Project>
我已经安装了软件包 Microsoft.EntityFrameworkCore.Sqlite 和 Microsoft.EntityFrameworkCore.Tools,然后添加迁移以成功构建数据库。
但是当我尝试引用 TransactionModel 时,编译器产生了一堆错误,但我认为这是主要错误: “无法解析程序集或 Windows 元数据文件..”
我附上了我的 vs2017 解决方案的图片。我还没有在 T10 上编写任何代码,我刚刚创建了 T10 模板,引用了我的库,而 vs2017 产生了错误。如果我使用 UWP,我不会收到这样的错误...
所以我的问题是是否可以将 T10 与 EntityFrameworkCore 和 netstandard2.0 一起使用?有没有办法解决这个错误?
无法从 .NET Core 项目在模板 10 库上创建依赖项,因为模板 10 库是通用 Windows 库。当前版本的 Template 10 是这样。下一版本的 Template 10 也是如此。为什么?因为 Template 10 是为增强 UWP 应用程序开发而构建的库,因此需要 Windows 命名空间,如您所知,它不是 .NET Standard 的一部分。怎么会这样? Windows 命名空间永远不能是 cross-platform。也就是说,Windows 10(新版本)的基本接口不是从 Prism.Core 派生的,后者是一个 .NET Standard 库。这意味着导航界面和 MVVM 类 都是外部的,可以继承 side-stepping 模板 10。这回答了你的问题,我希望你能理解事物原样的技术原因。