2

SQLiteを使用して、ローカルマシンですばやく簡単なアプリを開発しました。AppHarborにアップロードする方法を検討している最中なので、ElephantSQLへのリンクを機能させるのに少し行き詰まっています。

アプリケーションPostgreSQLサンプルアプリケーションを使用し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.

4

3 に答える 3

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>
于 2013-01-15T15:26:48.193 に答える
1

私はAppHarborでnpgsql2.0.13ベータ版(2013年12月)を実行していましたが、最新のアセンブリを実行していて、 bindingRedirectsを気にしない場合は必要ないことがわかるまで、しばらくの間この問題に悩まされていました-それはpolicy.2.0.Npgsql.configファイルの内容をロールアップするために.netAL.exe/ assemblyリンカーツールによって生成されたdll(https://github.com/npgsql/Npgsql/blob/master/src/を確認してください) policyFileBuild.batを使用して、それがどのようにコンパイルされるかを確認してください)。

私の構成:
VS2012
.net 4.5
MVC4
Entity Framework 6(nugetパッケージの復元を介してインストール
npgsql --2.0.13.91(nugetパッケージの復元を介してインストール

ハッキー修正:
ビルド後のイベントとしてビルドから削除することで([プロジェクト]メニュー->[プロパティ]->[ビルドイベント]->[イベント後のコマンドライン])、エラーを回避できます(理由はわかりません)。AppHarborでは動作しません)。

したがって、このナンセンスを追加します。

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のビルドアクティビティのログの表示から表示できます。

その神のひどいmsbuildパッケージングルーチン(/outputディレクトリと/output / _PublishedWebsites)からのdllとconfigの2セットの削除に関して-私見-あなたがものを殺しているなら徹底する方が良いですが、単に_publishedwebsitesからのみ削除します。..

AppHarborに組み込まれると、ターゲットのデプロイメントからそれをチャックします。デプロイが完了するまで数分待たなければならない場合がありますが、デプロイがない場合はブロックが解除されます。

于 2013-12-06T05:00:42.200 に答える
0

このnugetパッケージにはpolicy.2.0.Npgsql.dllファイルがありません。公式のnugetNpgsqlパッケージから2.0.12バージョンのパッケージをインストールできますか?不足しているファイルがあります。

お役に立てば幸いです。

于 2013-01-15T12:29:29.860 に答える