linux下的getnetent常用吗,在Linux上构建面向.NET Framework的NuGet包

.NET CLI的分发不包含.NET Framework的任何引用程序集,因此其MSBuild版本无法解析所需的编译时资产 . 虽然这种情况是tracked on GitHub,但在迁移到MSBuild之前一直有效(CLI可以使用mono的引用程序集) .

虽然可以使用一些替代方法在非Windows机器上构建您的库:

1. Use mono 5+ to build the library.

这可能是最稳定的路径 .

Mono 5及更高版本包含构建.NET Standar和.NET Core应用程序所需的构建逻辑 . 在linux上,mono的msbuild可能需要作为单独的软件包安装 . 因此,而不是以下常用命令

dotnet restore

dotnet build

dotnet publish -c Release

你会使用mono的msbuild来做以下事情:

msbuild /t:Restore

msbuild

msbuild /t:Publish /p:Configuration=Release

Pack workaround for mono < 5.2:

唯一的限制是mono(<5.2)不能生成开箱即用的NuGet包,但项目中有一个workaround involving using the NuGet.Build.Tasks.Pack NuGet package允许你通过修改项目文件来做 msbuild /t:Pack /p:Configuration=Release (特别注意 元素上删除的 Sdk="..." 属性) ):

junk-value-to-avoid-conflicts

2. Use the .NET CLI and tell MSBuild to use mono's reference assemblies.

构建 net* 目标框架时,可以将 FrameworkPathOverride 属性设置为环境变量或csproj文件中的属性 . 它需要指向一组参考组件 - 可以在这里使用mono的参考组件 . 但有些文件包含一个特殊文件(redist list),其中包含对.NET CLI中的MSBuild版本无法遵循的其他目录的引用 . 它在许多场景中都有效:

export FrameworkPathOverride=/usr/lib/mono/4.5/

dotnet build -f net45

3. Use a NuGet package containing reference assemblies.

在某些MyGet源上,Microsoft发布包含引用程序集的NuGet包 . 它们没有发布或"official"但是这个过程可能会在某个时间点失败 . 但他们确实做到了plan to investigate making this path official .

首先在解决方案的目录中创建一个NuGet.Config文件,其中包含以下内容以添加提要:

然后,您可以添加项目组以将 PackageReference 添加到目标包,并添加 PropertyGroup 以设置引用程序集的路径,如下所示:

Exe

netcoreapp1.1;net461

win7-x64

$(NuGetPackageFolders)microsoft.targetingpack.netframework.v4.6.1\1.0.1\lib\net461\

如果使用本机资产(例如,获取Linux的 .so 文件),则可以更改不同平台的 RuntimeIdentifier ,或者在构建库时将其完全删除 .

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值