已找到应用程序依赖项清单 (Test.deps.json) 中指定的程序集,但文件扩展名不同:

An assembly specified in the application dependencies manifest (Test.deps.json) has already been found but with a different file extension:

我正在尝试将新的 .net API 发布到 IIS。因为这需要在生产服务器上完成,所以我正在尝试使用示例 API 项目和测试服务器来弄清楚如何首先解决这个问题。

我用了this作为参考。

项目使用.net 5.0 我安装了 windows .net 核心托管包 v5.0.6 我安装了 windows .net core 运行time v5.0.6

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

示例项目只是您可以获得的最基本的 .net 核心 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,但我不确定要删除什么,而且每次编辑都会使程序集失效。

我尝试将 project/runtime 和应用程序池切换为 32 位,但还是发生了同样的事情。

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

我尝试了在其他 SO post 上可以找到的所有可能的解决方案,但没有任何改变。 我将 <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest> 添加到我的 csproj,但还是没有任何反应。

我尝试从库密钥中删除 Test.deps.json 中的重复项,其他一些 SO post 推荐这样做,但这使程序集无效。

我现在完全没有想法,想完成这个以便继续前进。

如果需要,我会提供任何其他信息,提前谢谢!

我在 .net core 3.1 中用示例 API 尝试了相同的过程,这在第一次尝试时就奏效了。也许可以将真正的 API 移植回 3.1,但这绝对不是首选。

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

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