使用MSBuild 15在Linux上构建混合项目失败求助
解决Linux上MSBuild 15构建.NET 4.6.2项目的project.json运行时错误
我来帮你搞定这个问题——在Linux上用MSBuild 15构建混合解决方案时,.NET Framework 4.6.2项目报的这个错,本质是因为.NET Framework是Windows专属框架,Linux环境下NuGet需要明确知道这个项目的目标运行时。
下面是具体的解决步骤:
第一步:给project.json添加runtimes配置
找到报错项目的project.json文件,在根节点里加入runtimes节点,具体内容如下:{ // 保留你原有的其他配置 "runtimes": { "win": {} } }这里的
win就是告诉NuGet:这个项目是针对Windows运行时的,空对象表示不需要额外的子配置。第二步:重新执行NuGet还原
切换到解决方案根目录或者该项目的目录下,运行还原命令让配置生效:# 如果你的环境直接支持nuget命令 nuget restore YourSolutionName.sln # 或者通过Mono运行nuget.exe的情况 mono nuget.exe restore YourSolutionName.sln # 也可以尝试用dotnet CLI(如果环境兼容) dotnet restore YourSolutionName.sln额外的优化建议
如果你这个.NET 4.6.2项目是SDK风格的.csproj(而非旧的传统项目格式),其实可以不用修改project.json,直接在.csproj文件里配置RuntimeIdentifier更方便:<PropertyGroup> <RuntimeIdentifier>win</RuntimeIdentifier> </PropertyGroup>这种方式更贴合现代.NET项目的配置习惯,也不用维护额外的project.json文件。
另外要提醒你:即使构建成功,生成的.NET 4.6.2程序集依然只能在Windows环境运行,这是.NET Framework本身的平台限制,这点要心里有数。
内容的提问来源于stack exchange,提问作者DracoRSA
相关产品推荐
相关产品推荐

