我想知道为什么我的应用程序引用了我创建的也使用 Dapper 的 dll 失败。我收到一条Method not found: 'System.Collections.Generic.IEnumerable'1<!!0> Dapper.SqlMapper.Query(System.Data.IDbConnection, System.String, System.Object)'.
错误消息。当我将其追踪到有问题的代码时,它似乎位于 DotPdfInvoideLayout.dll @InvoiceManager.LoadData()
下面是失败的方法的代码,因为我将其称为 dll,堆栈跟踪指向最后一个大括号方法。第 1988 行。我假设我真正的问题是调用Query()
public void loadData(IEnumerable<IPdfRenderable> textBoxes)
{
var conn = new SqlConnection("Server=something;DataBase=TRIMS;UID=user;Password=password;");
var output = conn.Query<TRIMNameAddressMaster>("Select top 1 * from Trims.dbo.TRIMNAMEADDRESSMASTER where id = '" + _transaction.strap + "'", null).FirstOrDefault();
var type = output.GetType();
var properties = type.GetProperties();
var r = new System.Text.RegularExpressions.Regex(@"((?<=\{)[^}]*(?=\}))+");
foreach (var textbox in textBoxes)
{
var matches = r.Matches(((PdfTextBox)textbox).Text);
foreach (Match match in matches)
{
try
{
var p = properties.Single(pi => pi.Name.ToLower() == match.Value.ToLower());
((PdfTextBox)textbox).Text = ((PdfTextBox)textbox).Text.Replace(
"{" + match.Value + "}", (p.GetValue(output, null) ?? string.Empty).ToString());
}
catch (Exception ex)
{
Console.WriteLine("No Mapping occurred" + match.Value);
}
}
}
}
作为控制台应用程序DotPdfInvoiceLayout
运行得非常好。我删除了 Main() 并更改了项目属性以将其作为类库运行,然后将生成的 dll 复制到我的 web 应用程序的 bin 中,并在 web 项目中引用了 dll。
我试图确保两者都使用相同版本的 Dapper。