我有一个.NET Core 2.1控制台应用程序,它使用配置文件中的<RuntimeIdentifier>
设置编译为exe。
在构建过程中,它将所有依赖项(236个文件)复制到输出中,并具有这些依赖项,看来运行良好。有一个.deps.json
文件列出了所有这些文件。
该工具是一个开发工具,并且在始终安装了Visual Studio和.NET Core 2.1的计算机中执行,因此我尝试从输出文件夹中删除所有.NET Framework依赖项(减少到10个文件)。
结果,它在我的计算机上运行正常,但是我在另一台计算机上抱怨缺少依赖关系。这些依赖关系位于两台计算机(具有相同版本)的.nuget文件夹中。
我收到类似错误
Error:
An assembly specified in the application dependencies manifest (myconsoleapp.deps.json) was not found:
package: 'Microsoft.DotNet.PlatformAbstractions', version: '2.0.0'
path: 'lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll'
我想更好地理解是什么原因导致两台机器之间的差异。似乎在其中一个依赖项上进行了检查,甚至在运行另一行代码之前也无法进行这种检查。
是否存在可以以某种方式关闭的初步依赖项检查?
为什么会这样?有没有诊断这种情况的好方法?
答案 0 :(得分:0)
最后,经过几个小时的研究,我认为我对装载概念有了更好的了解。内特·麦克马斯特(Nate McMaster)撰写了出色的blog post,最后还包含了一些其他参考。我可以将这些推荐给任何想加深了解的人。
在我的具体情况下,差异是由我与其他文件一起复制的.runtimeconfig.dev.json
引起的,没有注意到它实际上包含了我自己的用户C:\Users\gaspar\.nuget\packages
的packages文件夹。在另一台计算机上,用户名不同,因此.NET Core无法加载程序集。