我真的很困惑我写了一些从数据库中读取一些记录的代码。如果我将它编译为一个应用程序它工作正常。如果我将它编译为.dll并且我从另一个应用程序调用.dll,则代码不再起作用(它返回全零)。 此代码在Form_onShown()
中调用Portfolios.Add(new NPortfolio(1, "1", activeContracts));
Dictionary<string, double> p = db.GetPortfolio(1,Today);
Portfolios[0].UpdatePositions(p);
var strContracts = new List<string>();
strContracts.Add(pf.p_id);
strContracts.AddRange(pf.getPositions().Select(o => o.Value.ToString()).ToList());
这会在编译为.exe时返回我存储的数据库值,并在编译为.dll !!时返回全部0
NPortfolio类的定义如下:
public NPortfolio(int nr, string id, List<string> ac)
{
p_nr = nr;
p_id = id;
positions = new Dictionary<string, double>();
foreach (string ticker in ac)
{
positions.Add(ticker, 0.00);
}
}
public void UpdatePositions(Dictionary<string, double> position)
{
foreach (var k in this.getPositions().Keys.ToList())
{
if (position.ContainsKey(k))
{
this.positions[k] = position[k];
}
}
}
public Dictionary<string, double> getPositions()
{
return positions;
}
}
有什么建议吗?
R上。
答案 0 :(得分:0)
此代码应在.dll和.exe中运行相同。
最有可能的是,由于您的2个环境设置不同,这就是您的问题,而且很可能是数据库提供输入或您存储的连接数据。 (您未显示的代码。)
您是如何确定您发布的代码确实失败了?
您可以尝试: