[英]Referencing a .Net Core 3.1 project from a .Net Standard Class Library
[英].NET Core unable to load .NET Standard class library with dependencies
項目結構
我有三個項目
LibA是從Web引用的(通過DLL引用)。 LibA被LibA引用(通過項目引用,因為LibA和LibB在同一個VS2017解決方案中)。
在實踐中,有更多的項目和參考,但是我已經重現了這個問題。
我在Docker構建映像中使用命令發布了Web項目:
dotnet publish -c Release -o /app
依賴問題
通過檢查正在構建的docker映像,/ app文件夾同時包含LibA.dll和LibB.dll,因為它隱式確定需要包含LibB.dll才能使“網絡”工作。 到現在為止還挺好。
但是,當我嘗試運行docker容器時,即使兩個DLL與Web應用程序/ app位於同一文件夾中,我也會收到此錯誤:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'LibB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
另一方面,如果我從Web明確引用了LibA和LibB,則可以運行該項目而不會出現錯誤。
來自.NET Framework世界,通常程序集位於同一文件夾中就足夠了,但是顯然我需要做其他事情才能使依賴項的依賴項起作用?
項目文件
網站:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.2" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
</ItemGroup>
<ItemGroup>
<Reference Include="LibA">
<HintPath>..\lib\LibA.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
力霸:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\LibB\ClassLibraryB.csproj" />
</ItemGroup>
</Project>
LibB:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
我決定提出答案,因為它超出了注釋的字符數限制。
我復制了這些項目文件,但仍然無法重現該問題。 發布應用程序不會在已發布的輸出文件夾中包含LibB.dll,只有LibA.dll存在。 但是我認為這是直接組裝參考的預期行為。
它與.deps.json文件有關嗎?
如果您或您的構建管道不處理deps.json,則通常不會對這些問題產生影響,因為它會生成。 Nate McMaster在這方面有一篇不錯的博客文章 。
您的替代方法是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.