当.NET Core仍然使用project.json
格式时,您可以构建一个针对多个框架(例如net451、NETCoreApp1.0)的类库。
现在正式的项目格式是使用MSBuild的csproj
,那么如何指定多个框架作为目标呢?我试图从VS2017中的项目设置中寻找这一点,但我只能针对.NET核心框架中的一个框架(它甚至没有列出我确实安装的其他完整的.NET framework版本):
您需要手动编辑项目文件,并将s添加到默认的TargetFramework中,基本上将其更改为TargetFramework。然后您用一个;分离器。
此外,您还可以手动或使用VS Nuget包管理器将Nuget包引用放入条件项组中。
以下是您的.csproj应该是什么样子:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard1.6;net452</TargetFrameworks>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net452'">
<PackageReference Include="Microsoft.Azure.DocumentDB">
<Version>1.12.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.6'">
<PackageReference Include="Microsoft.Azure.DocumentDB.Core">
<Version>1.1.0</Version>
</PackageReference>
</ItemGroup>
</Project>
如果要以可移植配置文件为目标,它没有预定义的名字对象,因此可移植配置文件也无法推断TargetFrameworkIdentifier
、TargetFrameworkVersion
和TargetFrameworkProfile
。编译器常量也不是自动定义的。最后,您必须添加所有程序集引用,默认情况下不提供任何程序集引用。
下面的示例取自一个项目,该项目使用了dynamic
关键字,因此它还需要microsoft.csharp
程序集,因此您可以看到它是如何引用不同的目标的。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard1.5;net40;portable40-net45+sl5+win8+wp8</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8+wp8'">
<TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile158</TargetFrameworkProfile>
<DefineConstants>$(DefineConstants);PORTABLE158</DefineConstants>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)'=='netstandard1.5'">
<PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
<PackageReference Include="System.ComponentModel" Version="4.3.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net40'">
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8+wp8'">
<Reference Include="Microsoft.CSharp" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows" />
</ItemGroup>
</Project>
有没有一种方法可以轻松地将面向.NETCore2.0的类库转换为.NET标准? 如果我理解正确,如果有人想在针对不同.NET框架(例如.NET Framework,.NET Core,Xamarin等)的项目中最大限度地提高类库的可重用性,那么以.NET Standard为目标的更好主意 - 前提是所有必需的API都可以在将要定位的.NET Standard版本中提供。 这就是我想将类库从. NE
我读过关于.NET标准和.NET核心之间的区别,但我真的不知道区别是什么,也不知道什么时候选择.NET标准库项目,什么时候选择.NET核心库项目。
我搞不懂,怎么写一本书。NET核心Web API支持文件上传。请注意,我没有使用ASP。NET核心MVC表单,用于文件上载,但通过Servlet/JSP容器。以下是我的项目是如何完成的。定义了json, 以下是我的创业定义, 最后这里是如何定义我的控制器, 我经历过这个环节,https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-u
.NET核心和ASP.NET核心到底有什么区别?
我向我的.NET核心应用程序添加了一个app.config文件,如下所示 现在我在下面发现了一个错误 消息“无法加载在应用程序配置文件中注册得实体框架提供程序类型'System.Data.Entity.SqlServer.SqlProviderServices、EntityFramework.SqlServer',以固定名称为'System.Data.SqlClient'得ADO.NET提供程序.