使用Microsoft ClosedXml和 DocumentFormat.OpenXmlNuGet实用程序包时出现错误。更新了这些NuGet程序包(从2.7.2版到2.8.1版)后,现在出现以下异常:
异常System.IO.FileLoadException:无法加载文件或程序集'DocumentFormat.OpenXml,版本= 2.7.2.0,区域性=中性,PublicKeyToken = 8fb06cb64d019a17'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)
当我查看解决方案项目中的相关程序集时,它引用了正确的版本(2.8.1)。查看NuGet程序包管理器,没有对旧版2.7.2的引用(4个项目对新版2.8.1的引用)。在任何有关版本2.7.2的项目引用中,我都找不到任何提及。正在执行的应用程序文件夹中的文件也是正确的文件(2.8.1)(通过查看项目属性窗口的详细信息选项卡)。在我的解决方案中的其他地方,对旧版本号的引用(显然是导致此异常的地方)可以找到吗?
附加信息:我已经grep在执行此操作的应用程序目录(包括子目录)中的所有文件(包括二进制文件)上执行了操作,并且2.7.2找不到字符串。
另外,当我在Visual Studio中调试此程序时,它不会抛出异常。但是,当我在部署的构建文件夹中运行它时,我得到FileLoadException。
有点像
public partial class RegistrationForm :
IRegistrationForm, System.Web.UI.UserControl
Run Code Online (Sandbox Code Playgroud)
但这个例子不起作用.
假设我有一个这样的SQL语句来检查用户登录:
SELECT * FROM users
WHERE username='test@example.com', password='abc123', expire_date>=NOW();
Run Code Online (Sandbox Code Playgroud)
SQL中是否有一种方法可以确定哪些WHERE条件失败,而不必将每个条件分成自己的查询并单独测试?
在此特定示例中,它将允许开发人员准确地告诉用户他们尝试登录失败的原因.
出于我的目的,我正在使用PHP/MySQL.
我已经构建了这个SQL Query,它搜索所有策略号并返回所有多个PPOLNO货币值的总和:
SELECT PPOLNO, SUM(PPRMPD) AS SUM
FROM PFNTLPYMTH
WHERE SUM(PPRMPD) >= 5000
AND ((PYEAR=2012 AND PMONTH >=3
AND PDAY >=27) OR (PYEAR=2013
AND PYEAR <=3 AND PDAY<=27))
GROUP BY PPOLNO
Run Code Online (Sandbox Code Playgroud)
我正在做的只是在SUM> =特定值时才返回它们.这可能吗?怎么样?我试过这个:
SELECT PPOLNO, SUM(PPRMPD) AS SUM FROM PFNTLPYMTH
WHERE SUM(PPRMPD) >= 5000 AND ((PYEAR=2012 AND PMONTH >=3 AND PDAY >=27) OR (PYEAR=2013
AND PYEAR <=3 AND PDAY<=27)) GROUP BY PPOLNO
Run Code Online (Sandbox Code Playgroud)
但无济于事.我刚刚尝试输入WHERE SUM> = 5000,但是再一次没有.
任何帮助将不胜感激.
有人告诉我,当从ADO.net调用Oracle时,在循环中调用多个插入时,每个插入都会触发一个触发器,包括在其PL-Sql中的一个提交语句,它是不可能停止该提交的实际上是在提交交易.
即,我希望我的ADO.Net代码在循环开始之前开始一个事务,并且,当循环退出时,只有当循环中的每个插入成功时才提交所有插入.我的消息来源告诉我Oracle的工作方式,如果这些触发器包含COmmit语句,那么这是不可能的..
因为这似乎是一个非常普遍的要求,我知道在SQL Server中这是可能的,这对我来说似乎不对.
它是否正确?
是否有托管代码(不添加COM组件或包装调用C++例程)的方式将集成安全性添加到C#托管代码程序集?
即我想编写一个客户端 - 服务器系统,其中服务器使用远程处理而不是IIS,但我希望客户端自动将其凭据传递给服务器,就像浏览器与启用集成安全性的IIS服务器通信时一样. .
可以这样做吗?如果是的话,哪里有一些例子?
是否有任何方法可以在类上执行此操作并仍保留检测Type的变量是否为空的功能?我可以为结构执行此操作,(因为struct不能真正为null,使用结构,而不是将x与null进行比较,您使用单独的方法caleld IsNull或HasValue ...但是您不能将该技术用于类的原因是当类变量为null时,你当然不能调用这样的实例方法了!
public class myClass: IEquatable<myClass>
{
public int IntValue { get; set; }
public static bool operator ==(myClass cA, myClass cB)
{ return cA is myClass && cB is myClass && cB.Equals(cA); }
public static bool operator !=(myClass cA, myClass cB)
{ return !(cA == cB); }
public override bool Equals(object o)
{ return o is myClass && this == (myClass)o; }
public override bool Equals(myClass o)
{ return IntValue == o.IntValue; }
}
Run Code Online (Sandbox Code Playgroud)
但是当我走的时候:
myClass x;
if …Run Code Online (Sandbox Code Playgroud) 我需要减去两个列值,并在选择查询中显示输出列。
SELECT c.name,
(SELECT SUM(p.qty*s.price)
FROM stock s, purchase p
WHERE s.company = p.company
GROUP BY p.company)
MINUS
(SELECT SUM(p.price*p.qty)
FROM stock s, purchase p
WHERE s.company = p.company
GROUP BY p.company) AS "Profit/Lost"
FROM purchase p, client c, stock s
WHERE s.company = p.company
AND c.clno = p.clno
GROUP BY p.company;
Run Code Online (Sandbox Code Playgroud)
但是它将显示一个错误。怎么解决?
这会失败吗?Resharper将此报告为"访问已修改的闭包"的实例是否会为每个值触发lambda?迭代器是否在this更改first运行的行之前生成所有间隔值的完整列表?或者是first = itvl;
为了达到迭代而运行的行,并且改变了first用于后续迭代的值?
public HourInterval FirstInterval
{
get
{
var first = HourInterval.Make(DateTime.MaxValue);
foreach (var itvl in this.Where
(itvl => itvl < first))
first = itvl;
return first;
}
}
Run Code Online (Sandbox Code Playgroud)
注意. HourInterval是一个值类型结构,表示每个一小时的日历时间......并且this是一个对象的IEnumerable集合HourInterval
编辑:
以上是Resharper建议从以下foreach构造转换为LINQ表达式的内容......
public HourInterval FirstInterval
{
get
{
var first = HourInterval.Make(DateTime.MaxValue);
foreach (var itvl in this)
if(itvl < first)
first = itvl;
return first;
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个列表,此列表包含以下类的集合
public class MyFile
{
public string FileName
{
get;
set;
}
public int Position
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,列表定义将如下所示:
private List<MyFile> MyFiles = new List<MyFile>();
Run Code Online (Sandbox Code Playgroud)
我也可以使用以下方法搜索集合:
MyFile tmpFile = MyFiles.Find(delegate(MyFile item)
{ return item.FileName == fileName; });
Run Code Online (Sandbox Code Playgroud)
到目前为止看起来不错,除了我想要做的是返回MyFile,它不仅匹配文件名,而且在字段pos中也具有最高值.
因此,如果列表中存在以下项目:
myDocument.doc|1
myDocument.doc|2
myDocument.doc|3
myPDF.pdf|1
myPDF.pdf|2
myPDF.pdf|3
Run Code Online (Sandbox Code Playgroud)
并且我的find方法中的fileName ="myDocument.doc"的值,然后我仍然缺少返回myDocument.doc | 3这个项目的逻辑,因为它具有最高的pos值.
在SQL中,我的查询将是
select top 1 * from MyFiles
where fileName = 'myDocument.doc'
order by position desc;
Run Code Online (Sandbox Code Playgroud)
提前致谢.