应用程序依赖清单(Test.deps.json)中已经找到一个程序集,但其文件扩展名与之前的不同:

19

我正在尝试将一个新的 .net API 发布到 IIS。因为这需要在生产服务器上完成,所以我首先使用样本API项目和测试服务器来找出如何进行操作。

我使用这个作为参考。

该项目使用 .net 5.0。 我安装了 Windows .NET Core 主机捆绑包 v5.0.6 我安装了 Windows .NET Core 运行时 v5.0.6

我按照所有必要的步骤在 IIS 中创建了应用程序池和网站。

示例项目只是最基本的 .net core web API 项目,你可以得到,只需点击 web API 并不做任何更改,它只有 1 个端点和一个 Swagger 页面。

当我将其发布到测试服务器并尝试在浏览器中查看 Swagger 页面时,我收到 404 错误。

如果我使用 dotnet "Projectname".exe 运行项目 exe,则会收到以下错误消息:

D:\ThirdPartyAPI>dotnet Test.exe
Error:
  An assembly specified in the application dependencies manifest (Test.deps.json) has already been found but with a different file extension:
    package: 'Test', version: '1.0.0'
    path: 'Test.dll'
    previously found assembly: 'D:\ThirdPartyAPI\Test.exe'

我尝试编辑 Test.deps.json,但不确定要删除什么内容,并且每次编辑后,程序集都会变得无效。

我尝试将项目、运行时和应用程序池切换为32位,但结果相同。

如果我在包管理器控制台中键入dotnet publish,然后通过转到已发布的文件夹并使用命令dotnet run Test.exe在本地运行api,结果也相同。

我尝试了其他SO帖子上找到的所有可能的解决方案,但没有任何改变。

我在我的csproj中添加了<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>,但仍然没有任何改变。

我尝试从libraries关键字中删除我的Test.deps.json中的副本,这是其他SO帖子推荐的,但这使程序集无效。

我现在已经没有任何想法,希望能完成这个任务,以便可以继续进行。

如有需要,我将提供任何其他信息。谢谢您的帮助!

我尝试了相同的过程,使用.net core 3.1的样例API,第一次就成功了。可能可以将真实的API移植回3.1,但这绝对不是首选方法。

1个回答

23

您应该运行dotnet Test.dll或者简单地运行Test.exe,因为这两种方式都是执行.NET Core应用程序的支持方式。

dotnet Test.exe不会起作用,因为dotnet CLI希望提供托管程序集,而Test.exe被称为所谓的“默认可执行文件”(实际上它是一个没有任何托管元数据的本机Windows二进制文件)。


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