c# - .NET Core 2.1 - 构建时的 dotnet/exe,缺少包

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

我一直在一台机器上开发,最近尝试在另一台 PC 上安装我的应用程序。我想我已经推断出在 .NET Core 中找不到 nuget 包,nuget 将包放在本地“用户”文件夹路径中。

我最初添加了 <RunTimeIdentifier>标记来创建一个 exe(在我的开发人员机器上工作)。当在另一台机器上运行 exe 时,控制台窗口将快速闪烁并且应用程序停止并且没有错误输出(即使在事件查看器中)。

我还添加了这个标签 <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest

在没有影响的 *.csproj 中。

所以我尝试运行 dotnet project.dll这在另一台机器上给了我这个错误。

An assembly specified in the application dependencies manifest (project.deps.json) was not found:

package: 'Localization.AspNetCore.TagHelpers', version: '0.3.0'

path: 'lib/netstandard1.6.1/Localization.AspNetCore.TagHelpers.dll'

当我“重新创建”文件夹结构时,瞧瞧,一切正常。 有没有一种编译/构建的方法可以将这些包复制到 bin 文件夹,而路径引用它们?还是我构建/编译错误?

另请注意,该项目已从 .NET Core 2.0 更新到 2.1。

最佳答案

简答

听起来你想要一个 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可执行文件,因为它的所有依赖项都存在。

关于c# - .NET Core 2.1 - 构建时的 dotnet/exe,缺少包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51604179/

相关文章:

c# - 从 C# 执行命令并等待完成执行

c# - TypeCatalog 的使用

c# - 我检查了 INotifyPropertyChanged 但如何利用它?

c# - 如何使用 AuthorizationHandlerContext 在 ASP.NET Core 2 自定义基于策略的授权中访问当前的 HttpContext

c# - Windows Phone 7 中的 JSON 解析

c# - 从 C# 生成 Excel - 如何制作对角线边框?

c# - WhenActivated 在 ViewModelViewHost 控件中托管的 Views 和 ViewModel 中使用时被调用两次

c# - 如何使用 LINQ 查询 JSON?

asp.net-core - 如何使用 ubuntu 在本地网络上共享 asp.net 核心应用程序?

c# - Xamarin\C# 所有类的命名空间相同吗?