Windows + NET Framework 版本的 TargetFrameworks Moniker
TargetFrameworks Moniker for Windows + NET Framework Version
在 Visual Studio 中,当使用 .NETStandard 项目时,我们可以选择使用以下名字对象指定其他平台:
<TargetFrameworks>net45;net46;netstandard1.0;netstandard1.3</TargetFrameworks>
在上面您可以看到 class 库项目针对 4 个平台。当我编译项目时确实会构建。但是,我担心的是目标 net45
和 net46
中的许多代码都使用 Win32 API 并为基于 WPF 的应用程序提供实用函数。
我希望为在 Mono 平台中引用 class 库(通过 NuGet)的项目隔离这些实用程序,如果可能的话使用一些宏作为 class 库中的 WPF 实用程序在Mono环境下使用显然会导致前所未有的后果。
是否有任何名字可以帮助我明确指定 Windows-only .NET 平台的目标?可能从 Windows 8 开始。
目前这是不可能的。有一个 proposal to add mono-specific target framework identifiers 与您想要的相反。如果实现了这一点,您可以创建一个单声道特定版本,该版本将由单声道而不是 net*
特定构建使用。
但是,您可以创建特定于运行时的构建,这些构建会被放入 runtimes/win/lib/net46/windows-specific.dll
中,以便在从 windows 上的 .NET Framework 项目中使用时使用。这需要创建自定义包布局,甚至可能需要引用程序集以放入 ref/net46
。此 dll 也可能被 mono 运行 windows.
使用
但请注意,net461
也是 .NET Core 2.0 库的后备框架,因此如果 NuGet 包仅包含 net46
构建,它将用于 .NET Core 2.0申请。
最好的方法可能是在库中包含这两个实现并确定 via Reflection if it the runtime being used is mono。
在 Visual Studio 中,当使用 .NETStandard 项目时,我们可以选择使用以下名字对象指定其他平台:
<TargetFrameworks>net45;net46;netstandard1.0;netstandard1.3</TargetFrameworks>
在上面您可以看到 class 库项目针对 4 个平台。当我编译项目时确实会构建。但是,我担心的是目标 net45
和 net46
中的许多代码都使用 Win32 API 并为基于 WPF 的应用程序提供实用函数。
我希望为在 Mono 平台中引用 class 库(通过 NuGet)的项目隔离这些实用程序,如果可能的话使用一些宏作为 class 库中的 WPF 实用程序在Mono环境下使用显然会导致前所未有的后果。
是否有任何名字可以帮助我明确指定 Windows-only .NET 平台的目标?可能从 Windows 8 开始。
目前这是不可能的。有一个 proposal to add mono-specific target framework identifiers 与您想要的相反。如果实现了这一点,您可以创建一个单声道特定版本,该版本将由单声道而不是 net*
特定构建使用。
但是,您可以创建特定于运行时的构建,这些构建会被放入 runtimes/win/lib/net46/windows-specific.dll
中,以便在从 windows 上的 .NET Framework 项目中使用时使用。这需要创建自定义包布局,甚至可能需要引用程序集以放入 ref/net46
。此 dll 也可能被 mono 运行 windows.
但请注意,net461
也是 .NET Core 2.0 库的后备框架,因此如果 NuGet 包仅包含 net46
构建,它将用于 .NET Core 2.0申请。
最好的方法可能是在库中包含这两个实现并确定 via Reflection if it the runtime being used is mono。