我一直在一台机器上进行开发,最近尝试在另一台PC上安装我的应用程序。我想我已经推断出自.NET Core以来找不到的nuget软件包, nuget将这些软件包放在本地“用户”文件夹路径中。
最初,我添加了<RunTimeIdentifier>
标签来创建一个exe(可在我的开发人员计算机上使用)。在其他计算机上运行exe时,控制台窗口将非常快地闪烁,并且应用程序将停止且没有错误输出(即使在事件查看器中)。
我还添加了此标签<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest
在* .csproj中没有任何作用。
所以我尝试运行dotnet project.dll
,这在另一台机器上给了我这个错误。
未找到在应用程序依赖清单(project.deps.json)中指定的程序集:
程序包:“ Localization.AspNetCore.TagHelpers”,版本:“ 0.3.0”
路径:“ lib / netstandard1.6.1 / Localization.AspNetCore.TagHelpers.dll”
当我“重新创建”文件夹结构时,发现一切正常。 在编译/构建时,是否有办法将这些软件包复制到bin文件夹中,而路径会引用这些软件包?还是我编译/编译错误?
还请注意,该项目已从.NET Core 2.0更新为2.1。
答案 0 :(得分:4)
听起来您想要self-contained deployment。这就是dotnet publish --self-contained --runtime <some-runtime>
输出到publish
目录的地方。
假设我们在C:\temp\temp.csproj
拥有一个应用程序,我们希望将其发布到两个target platforms。
如果我们这样发布...
dotnet publish --self-contained --runtime win-x86
...独立的可执行文件将在这里:
C:\dev\temp\bin\Debug\netcoreapp2.1\win-x86\publish\temp.exe
如果我们这样发布...
dotnet publish --self-contained --runtime ubuntu-x64
...独立的可执行文件将在这里:
C:\dev\temp\bin\Debug\netcoreapp2.1\ubuntu-x64\publish\temp
如果我们随后将整个publish
目录复制到目标计算机,则可以执行temp
可执行文件,因为存在所有依赖项。