【发布时间】:2017-09-07 21:01:16
【问题描述】:
我在 Ubuntu 上,我有两个 .NET Core 2.0 项目(项目 Oranges.csproj 和 Apples.csproj)。 Oranges 仅包含对 NuGet 包的引用,而 Apples 包含对 Oranges 的引用。
运行dotnet build -f netcoreapp2.0 Oranges.csproj 成功! Oranges.dll 现在存在于 /Oranges/bin/Debug/netcoreapp2.0/Oranges.dll。
运行 dotnet build -f netcoreapp2.0 Apples.csproj 失败:error CS0009: Metadata file '/Oranges/bin/Debug/netcoreapp2.0/Oranges.dll' could not be opened -- PE image doesn't contain managed metadata
如何在Apples 中毫无问题地引用Oranges,它可以毫无问题地构建?
Oranges.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<TargetFrameworks>netcoreapp2.0;net451;</TargetFrameworks>
<RootNamespace>Oranges</RootNamespace>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>..\..\GeneratedKey.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'netcore2.0'">
<DefineConstants>NETCORE2_0</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'net451'">
<DefineConstants>NET4_5_1</DefineConstants>
</PropertyGroup>
<ItemGroup>
<None Remove="packages.config" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="System.Collections.Immutable" Version="1.4.0" />
</ItemGroup>
</Project>
Apples.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<TargetFrameworks>netcoreapp2.0;net451;</TargetFrameworks>
<RootNamespace>Apples</RootNamespace>
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>..\..\GeneratedKey.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<ItemGroup>
<None Remove="packages.config" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.1.1-beta" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="System.Collections.Immutable" Version="1.4.0" />
<PackageReference Include="System.Composition" Version="1.1.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Oranges\Oranges.csproj" />
</ItemGroup>
</Project>
【问题讨论】:
-
你能给我们提供苹果和橙子的 csprojs 吗?顺便说一句,不错的项目名称。
-
@Thomas 当然可以!
-
使用 CLI 添加引用。 MSDN 文档here
-
@PratikGaikwad 感谢您的评论。我已经添加了对该项目的引用。请参阅上面
Apples.csproj的代码。 -
这个构建是否在 windows 上使用 msbuild(/mono 5.2 msbuild 在 linux 上)?完整的程序集签名尚未在 .net 核心 AFAIK 上工作
标签: c# asp.net linux asp.net-core msbuild