我在本地计算机上使用SQLite开发了一个快速而简单的应用程序。现在我正在研究如何上传到AppHarbor,我有点卡住了使用ElephantSQL的链接工作。
我使用Application PostgreSQL Sample Application来确定我需要将PostgreSQLConfiguration
类用于我的FluentNHibernate配置,并将Npgsql包安装到我的解决方案中(我得到了2.0.12.1版)。
当我将代码推送到AppHarbor时,它可以快速构建和部署。当服务器开始启动AppDomain时,它会抛出错误Could not load file or assembly 'policy.2.0.Npgsql' or one of its dependencies. Modules which are not in the manifest were streamed in. (Exception from HRESULT: 0x80131043)
。这不会记录在AppHarbor仪表板的错误部分中(可能这是一个缺失的功能或错误?)所以我不得不关闭CustomErrors来弄清楚发生了什么。
我错过了什么?
其他 - 我尝试降级到包2.0.11版。这不包括policy.2.0.Npgsql.dll文件,当尝试加载应用程序时,它失败并显示错误Unable to find the requested .Net Framework Data Provider. It may not be installed.
。
答案 0 :(得分:2)
我通过下载到2.0.11版本并确保DbProviderFactories配置部分在type属性中具有正确的版本号。
<DbProviderFactories>
<add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Framework Data Provider for PostgreSQL Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.11.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
</DbProviderFactories>
答案 1 :(得分:1)
我在 AppHarbor 上运行了npgsql 2.0.13 beta(2013年12月),并且在这个问题上有一段时间了,直到我发现如果你运行的是最新版本,它就不需要了程序集并且不关心bindingRedirects - 它是由.net AL.exe /程序集链接器工具生成的dll,用于汇总policy.2.0.Npgsql.config文件的内容(请查看https://github.com/npgsql/Npgsql/blob/master/src/policyFileBuild.bat以查看如何那是编译的)。
我的配置:
VS2012
.net 4.5
MVC4
实体框架6(通过nuget包恢复安装)
npgsql - 2.0.13.91(通过nuget包恢复安装)
所以加上这个废话:
del $(TargetDir)policy.2.0.Npgsql.dll /F
del $(TargetDir)policy.2.0.Npgsql.config /F
dir $(TargetDir)
del $(TargetDir)_PublishedWebsites\<appname/>\bin\policy.2.0.Npgsql.dll
del $(TargetDir)_PublishedWebsites\<appname/>\bin\policy.2.0.Npgsql.config
dir $(TargetDir)_PublishedWebsites\<appname/>\bin\
这可能是过度杀戮,但请注意 dir dos命令语句会为您提供有关目录内容的反馈,以确保文件实际已被删除。这可以从 AppHarbor 中的构建活动的显示日志中查看。
关于dll上的2组删除和来自那个上帝糟糕的msbuild打包例程(/ output目录和/ output / _PublishedWebsites)的配置 - 恕我直言 - 如果你要杀死东西,最好是彻底的,但它可能是仅仅从_publishedwebsites ...
中删除就足够了当它在 AppHarbor 中构建时,这将从目标部署中删除它。您可能需要等待几分钟才能完成部署,但是部署时不会阻止您。
答案 2 :(得分:0)
我认为这个nuget包缺少policy.2.0.Npgsql.dll文件。你可以从官方nuget Npgsql包安装2.0.12版本的软件包吗?它有丢失的文件。
我希望它有所帮助。