Devart dll st をパッケージ化する目的でカスタム nuget パッケージを作成したところです。すべてのプロジェクトで適切なバージョン管理と更新メカニズムが導入されています。
Nuget パッケージの構造は、公式 wikiの指示に従っており、次のようになります。
- デバートオラクル
- コンテンツ
- web.config.transform
- ライブラリ
- Devart.Data.Oracle.dll
- ...
- DevartOracle.nuspec
- コンテンツ
nuspec ファイルの内容は、ほぼ次のとおりです。
<?xml version="1.0"?>
<package >
<metadata>
<id>DevartOracle</id>
<version>6.70.311-pre6</version>
<title>Devart Oracle dotConnect</title>
...
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Drivers from Devart for Oracle and Entity Framework</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 2012</copyright>
<tags></tags>
<dependencies>
</dependencies>
</metadata>
</package>
実際には特別なことは何もありません。次のコマンドを使用して、nuget パッケージをローカル リポジトリに公開します。
nuget pack DevartOracle.nuspec
dll のインストールは問題ありませんが、web.config マージも作成したいと考えていました。そこで、ドキュメントで指定されているように web.config.transform ファイルを追加しました...再び次の内容で:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Devart.Data.Oracle" publicKeyToken="09af7300eec23701" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.70.311.0" newVersion="6.70.311.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="Devart.Data.Oracle" />
<add name="dotConnect for Oracle" invariant="Devart.Data.Oracle" description="Devart dotConnect for Oracle" type="Devart.Data.Oracle.OracleProviderFactory, Devart.Data.Oracle, Version=6.70.311.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
</DbProviderFactories>
</system.data>
</configuration>
問題
存在しないか空の<assemblyBinding>
セクションで web.config へのマージを実行すると、すべてが期待どおりに機能しますが、たとえば、次のコンテンツが既に存在する場合:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
マージの結果はこの奇妙なものです:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
<assemblyIdentity name="Devart.Data.Oracle" publicKeyToken="09af7300eec23701" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.70.311.0" newVersion="6.70.311.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
何か案は??
アップデート:
Microsoft の従業員とアクティブな NuGet 開発者が Twitter に更新を投稿しました 。