Per aggiungere ad altri motivi.
Avevo una soluzione VS2010/csproj che faceva riferimento a Enterprise Library 5.0.xxxxx.
Tuttavia, csproj è stato impostato su "Target 3.5 Framework". Pertanto, dovevo scegliere come target il framework 4.0 OPPURE andare "down" alla versione 3.5 della Enterprise Library.
Sono stato in grado di aggiornare il framework di destinazione a 4.0 e quindi gli errori sono andati via.
Ecco cosa si può fare per capire quale versione quadro il codice è stato compilato per: (mini script di PowerShell)
[System.Reflection.Assembly]::LoadFrom("c:\somefolder\Any_Of_The_Practices.dll").ImageRuntimeVersion
Se si ottiene v2.0.50727, allora avrai problemi a girare sotto Framework 4.0 (o superiore).
EDIT:
Ho anche ottenuto questo errore non avendo le "DbProviderFactories" corrette definiti. sto inviando una configurazione di MySql che ho trovato su questo URL: (sto copiando che, nel caso in cui l'URL muore in futuro)
(da http://searchcode.com/codesearch/view/14385662)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/>
</configSections>
<system.data>
<DbProviderFactories>
<add name="EntLibContrib.Data.MySql"
invariant="EntLibContrib.Data.MySql"
description="EntLibContrib Data MySql Provider"
type="EntLibContrib.Data.MySql.MySqlDatabase, EntLibContrib.Data.MySql, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null" />
</DbProviderFactories>
</system.data>
<dataConfiguration defaultDatabase="Default Connection String">
<providerMappings>
<add databaseType="EntLibContrib.Data.MySql.MySqlDatabase, EntLibContrib.Data.MySql, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null"
name="EntLibContrib.Data.MySql"/>
</providerMappings>
</dataConfiguration>
<connectionStrings>
<add name="Default Connection String"
connectionString="database=northwind;uid=root;pwd=admin"
providerName="EntLibContrib.Data.MySql"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
Infine:
Una volta ricevuto questo errore perché non avevo un ConnectionString (nel file di configurazione) con lo stesso nome del valore di defaultDatabase. Aka, il semplice errore "teschio intorpidito".
È possibile inserire questo codice della valvola di sicurezza (poco prima di creare il database), se lo si desidera.
DatabaseSettings dataConfig = (DatabaseSettings)ConfigurationManager.GetSection("dataConfiguration");
string configDefaultDatabase = string.Empty;
if (null != dataConfig)
{
configDefaultDatabase = dataConfig.DefaultDatabase;
if (!String.IsNullOrEmpty(configDefaultDatabase))
{
ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings;
if (null == connections[configDefaultDatabase])
{
throw new ArgumentOutOfRangeException(
string.Format(
"Your dataConfiguration (DefaultDatabase) does not match any of your connection strings. DefaultDatabase='{0}'.",
configDefaultDatabase));
}
}
}
qualcuno qui che può aiutare? –
Il file di configurazione dovrebbe probabilmente essere con il progetto di test, ma non sono sicuro che funzioni. Quale framework di test stai usando? –
sì, ho capito che stavo facendo riferimento alla copia errata .dll. funziona ora, grazie per l'aiuto./ –