Mic*_*tum 9 .net .net-core .net-core-2.0
我在Windows上使用dotnet 2.1.4.dotnet --info显示:
.NET Command Line Tools (2.1.4)
Product Information:
Version: 2.1.4
Commit SHA-1 hash: 5e8add2190
Runtime Environment:
OS Name: Windows
OS Version: 10.0.16299
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\2.1.4\
Microsoft .NET Core Shared Framework Host
Version : 2.0.5
Build : 17373eb129b3b05aa18ece963f8795d65ef8ea54
Run Code Online (Sandbox Code Playgroud)
我正在使用dotnet发布来创建平台的输出:
dotnet publish ..\src\ChestnutDS.Host\ChestnutDS.Host.csproj
-c Release -o ..\..\published\win-x64
--self-contained -r win-x64 -v n
Run Code Online (Sandbox Code Playgroud)
这给了我在323文件的文件夹中所需的(和工作)输出.
现在,我想要做的是将所有大部分文件移动到子文件夹中,例如lib.
根据我收集的内容,additionalProbingPaths在runtimeconfig.json中设置应该有效:
{
"runtimeOptions": {
"additionalProbingPaths": [
"lib"
]
}
}
Run Code Online (Sandbox Code Playgroud)
但它抱怨没有找到图书馆:
Error:
An assembly specified in the application dependencies manifest (ChestnutDS.Host.deps.json) was not found:
package: 'Microsoft.AspNetCore.Antiforgery', version: '2.0.1'
path: 'lib/netstandard2.0/Microsoft.AspNetCore.Antiforgery.dll'
Run Code Online (Sandbox Code Playgroud)
尝试将--additionalProbingPath作为命令行参数传递也不起作用,同样的错误.
尝试创建提到的结构并移动文件(lib/netstandard2.0/Microsoft.AspNetCore.Antiforgery.dll)也不起作用.
我错过了什么吗?该功能被删除了吗?它看起来不像,源代码仍然包含它.
尝试创建上述结构并移动文件
看起来你已经lib/netstandard2.0/Microsoft.AspNetCore.Antiforgery.dll进入targets/Microsoft.AspNetCore.Antiforgery/2.0.1/runtime并进入"path": "microsoft.aspnetcore.antiforgery/2.0.1"了libraies/Microsoft.AspNetCore.Antiforgery/2.0.1。在这种情况下,预期的结构将是<additional probing path>/Microsoft.AspNetCore.Antiforgery/2.0.1/lib/netstandard2.0/Microsoft.AspNetCore.Antiforgery.dll
有两种类型的源文件夹,在其中hostpolicy.dll搜索依赖库(*.dll或*.ni.dll):
<PackageName>/<Version>/<DllPath>,默认情况下*.deps.json会生成以满足此约定)在这些文件夹中搜索依赖项:
C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.4\.假设我们有这个App.deps.json(独立部署)
"targets": {
"runtime.win-x64.Microsoft.NETCore.App/2.0.0": {
"runtime": {
"foo/Microsoft.CSharp.dll": {}, // <========
}
}
}
"libraries": {
"runtime.win-x64.Microsoft.NETCore.App/2.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-8jivXDJLuJTxMQuInZaMiD2VbxehFmYAtn2V9mj9juaR5jH54/OBGmGv6SrIUVNqASXB/8dJbce/beIKnOzroQ==",
"path": "bar", // <========
"hashPath": "runtime.win-x64.microsoft.netcore.app.2.0.0.nupkg.sha512"
}
}
Run Code Online (Sandbox Code Playgroud)
首先,hostpolicy.dll将创建所有资产的列表 - 来自每个依赖包的“运行时”和“本机”属性的库。
接下来,它必须创建一个 TPA(可信平台组件)列表,其中包含每个资产的绝对路径。为此,它将首先在应用程序文件夹中进行搜索<app folder path>\Microsoft.CSharp.dll(请注意,它将省略此特定文件夹的“路径”)。
一旦找不到 DLL,它就会检查Additional Probing Paths是否有。
这次,由于Additional Probing Path被认为是 NuGet 缓存,因此它期望存在某个子文件夹结构。具体来说,它将获取Package Nameand Versionfrom"libraries"部分,并组合"path"来自"runtime"(或"native") 部分的 DLL 路径。
因此,对于Microsoft.CSharp.dll探测路径将是<Additional Probing Path>/bar/foo/Microsoft.CSharp.dll
| 归档时间: |
|
| 查看次数: |
1067 次 |
| 最近记录: |