.NET Core 2.1 - 在构建时缺少dotnet/exe和包

7
我之前在一台机器上开发,最近尝试在另一台电脑上安装我的应用程序。我认为问题出在nuget包未被找到,因为在.NET Core中,nuget将包放在本地“Users”文件夹路径下。
我最初添加了标签以创建一个exe(在我的开发机器上工作)。但是在不同的机器上运行exe时,控制台窗口会非常快速地闪烁,并且应用程序停止而没有错误输出(即使在事件查看器中也没有)。
我还添加了这个标签false 在*.csproj中,但没有任何区别。
所以我尝试运行dotnet project.dll,在其他机器上给我这个错误。
在应用程序依赖项清单(project.deps.json)中指定的程序集未找到: package: 'Localization.AspNetCore.TagHelpers',version: '0.3.0'
路径:'lib / netstandard1.6.1 / Localization.AspNetCore.TagHelpers.dll'
当我“重新创建”文件夹结构时,一切都正常工作。
是否有一种方法可以在编译/构建时将这些包复制到bin文件夹并引用这些路径?或者我正在错误地构建/编译?
还要注意,此项目已从.NET Core 2.0升级到2.1。
1个回答

8

简短回答

看起来你想要进行一个独立部署(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可执行文件,因为它的所有依赖项都已经存在。

就是这样(发布命令)!我只是一直在运行“run”和“build”,因为在搜索部署文档时,这些是提到的。我想知道为什么我必须手动复制我的视图,谢谢! - Paul_LayLow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接