.NET Core RuntimeIdentifier vs TargetFramework

前端 未结 2 1076
独厮守ぢ
独厮守ぢ 2021-02-01 03:57

Can someone explain the purpose of this two in csproj file (VS2017):

netstandard1.6
win7&         


        
2条回答
  •  无人及你
    2021-02-01 04:54

    The (or when you want have multiple targets, such as net451, one or multiple netstandard1.x etc). Per / entry one set of assemblies will be created and located inside bin\Debug\).

    This is useful, when you want to use a different library in .NET Core (because the library you used only works with full .NET Framework such as 4.5.1) or remove this feature from i.e. .NET Core because it's unsupported.

    It is used for both, building and NuGet restore. i.e. you can't use a net451 only library in a .NET Core project (netstandard 1.1 for example - but you can use netstandard1.1 in a net451 project).

    / on the other side is used for NuGet mainly. It tells NuGet which packages you need. For example if you want to target Linux, Mac and Windows, certain assemblies require native libraries (such as encryption. On windows CryptoAPI will be used, but on Linux and Mac you need OpenSSL). This includes non-managed dlls and *.so (Linux) files.

    i.e. win7-x64;win7-x86;ubuntu.16.10-x64 will make nuget restore packages for win7 (both x64 and x86) versions and x64 only for ubuntu. This is required, because when you work on windows you need to download these native libraries too so you deploy/package them with dotnet publish.

    Here's a little catch though: When you have a full .NET Framework reference in or , then you must specify a single (singular, not plural ), otherwise you will get an error.

    For example:

    
        netstandard1.0;net451
        win7-x64;win7-x86;ubuntu.16.10-x64    
    
    
    
    
        win7-x64
    
    

提交回复
热议问题