.NET Core 2.1-构建中的dotnet / exe,缺少软件包

时间:2018-07-31 01:11:11

标签: c# .net asp.net-core nuget

我一直在一台机器上进行开发,最近尝试在另一台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。

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可执行文件,因为存在所有依赖项。