有人可以在 csproj 文件(VS2017)中解释这两个的目的吗:
<TargetFramework>netstandard1.6</TargetFramework>
<RuntimeIdentifier>win7</RuntimeIdentifier>
我刚刚从 VS2015 迁移,现在无法发布我的 web api,因为看起来我应该只使用一个目标框架。此外,我不能指定多个 RID。所有这些改变的事情让我感到沮丧。没有什么是从头开始的,应该一遍又一遍地克服一些事情。
我只想在 Windows 上开发我的 web-api,在这里运行 xUnit 测试,然后部署 web-api 以在 linux (ubuntu) 服务器上运行。我应该在 csproj 的两个参数中输入什么?非常感谢具有良好解释的链接。
更新1
我有带有引用的 .net 核心库的 web api。从 VS2015 迁移的所有内容。现在在根项目中我有
<TargetFrameworks>netcoreapp1.1;net461</TargetFrameworks>
. 当我通过 VS2017 发布时出现错误:
C:\Program Files\dotnet\sdk\1.0.3\Sdks\Microsoft.NET.Sdk\buildCrossTargeting\Microsoft.NET.Sdk.targets(31,5): error : The 'Publish' target is not supported without specified a目标框架。当前项目针对多个框架,请为发布的应用指定框架。
但我在发布时指定了目标框架为 netcoreapp1.1
. 好的。<PropertyGroup Condition="$(TargetFramework)'=='netcoreapp1.1'">
<RuntimeIdentifier>ubuntu.16.10-x64</RuntimeIdentifier>
</PropertyGroup>
然后我按照下面的建议更新了我的 csproj 。但现在我什至无法构建应用程序,出现错误:
5>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.targets(92,5): 错误:资产文件'\ obj\project.assets.json' 没有 '.NETCoreApp,Version=v1.1/ubuntu.16.10-x64' 的目标。确保您已针对 TargetFramework='netcoreapp1.1' 和 RuntimeIdentifier='ubuntu.16.10-x64' 恢复此项目。
我只想在 windows 8.1/windows7 上使用 VS2017 开发并部署到 ubuntu 16.10。我做错了什么?
更新2
我有 8 个项目在解决方案中。其中 3 个是 xUnit 测试。因此,我们有 5 个项目。这 5 个中的 4 个是类库,1 个是我的网络应用程序。所有 4 个类库都有这个:
<TargetFrameworks>netstandard1.6;net461</TargetFrameworks>
<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
我的网络应用程序:
<TargetFrameworks>netcoreapp1.1;net461</TargetFrameworks>
<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
如何发布我的网络应用程序?