0%
最基础的类库项目配置
1 2 3 4 5 6 7
| <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup>
</Project>
|
多目标框架开发
1 2 3 4 5 6 7
| <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <TargetFrameworks>netcoreapp3.1;net45</TargetFrameworks> </PropertyGroup>
</Project>
|
根据编写条件代码以针对每个目标框架进行编译
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class MyClass { static void Main() { #if NET45 Console.WriteLine("Target framework: .NET Framework 4.5"); #elif NETCOREAPP3_1 Console.WriteLine("Target framework: .NET Core 3.1"); #elif NETCOREAPP Console.WriteLine("Target framework: .NET Core x*x"); #endif } }
|
多目标框架下针对不同框架进行分别引用
多目标平台引用修改前
多目标平台引用修改后
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <TargetFrameworks>netcoreapp3.1;net45</TargetFrameworks> </PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'"> <PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net45'"> <Reference Include="Newtonsoft.Json" /> </ItemGroup>
</Project>
|
不同框架的可选符号
目标框架 |
可选符号 |
.NET Framework |
NETFRAMEWORK,NET20,NET35,NET40,NET45,NET451,NET452,NET46,NET461,NET462,NET47,NET471,NET472,NET48 |
.NET Standard |
NETSTANDARD,NETSTANDARD1_0,NETSTANDARD1_1,NETSTANDARD1_2,NETSTANDARD1_3,NETSTANDARD1_4,NETSTANDARD1_5,NETSTANDARD1_6,NETSTANDARD2_0,NETSTANDARD2_1 |
.NET Core |
NETCOREAPP,NETCOREAPP1_0,NETCOREAPP1_1,NETCOREAPP2_0,NETCOREAPP2_1,NETCOREAPP2_2,NETCOREAPP3_0 |
可选项目属性
- GeneratePackageOnBuild
默认为false,如果更改为true,在生成项目时,visual studio将创建的类库生成NuGet包。
- AssemblyName
程序集名称。
- RootNamespace
默认命名空间
- OutputType
输出类型,主要有WinExe、Exe、Library等。
- PackageId
NuGet包名称。
- Authors
软件作者名。
- Company
公司名称。
- Product
产品名称。
- Copyright
版权信息
- Description
对类库的描述和介绍信息。
- Version
版本号
- RepositoryType
仓库类型
- PackageTags
NuGet包标签
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> <AssemblyName>NetCoreSample</AssemblyName> <RootNamespace>NetCoreSample</RootNamespace> <OutputType>Library</OutputType>
<PackageId>NetCoreSample</PackageId> <Authors>icyrene</Authors> <Company>icyrene.cn</Company> <Copyright>icyrene.cn</Copyright> <Product>hello netcore</Product> <Description>this is a test library</Description> <Version>1.0.1</Version> <RepositoryType>git</RepositoryType> <PackageTags>test;netcore</PackageTags> </PropertyGroup> </Project>
|