我开发了一个非常大的Windows窗体.net(C#)应用程序与几个程序集.最初每个组件都是为Target Platfom"Any CPU"构建的.由于x64机器上的Crystal Reports存在问题,我们必须为x86目标平台构建整个项目.我重新开始为x86重建一些项目,它工作得很好.但有一个我有问题,当我尝试将其用作另一个程序集中的引用时,另一个不会加载它给出以下错误:
无法加载文件或程序集#MyAssembly#或其中一个依赖项.尝试加载格式不正确的程序.
在具有多个程序集的示例项目中使用Crystal进行游戏时,我发现当为不同的目标平台构建Projects时会发生此错误.但这不是这种情况.我为X86构建了每个Project,但无法弄清楚问题出在哪里.
我在VS 2010中有一个.NET项目,它已经发展成为包含大量表单,类和其他代码文件.我喜欢将其中一些文件分组到子文件夹中的想法,但是当我尝试移动它们时,一个命名空间的噩梦就开始了.
将表单移动到子文件夹后,Resharper会抱怨命名空间与文件位置不对应,并建议命名空间从"MyNamespace"更改为"MyNamespace.Subfolder"
如果我这样做,当然所有对表单的引用也需要更新.
我应该忽略名称空间建议,还是有更好的方法来组织代码文件?
我正在使用Connector/Net 6.8.3进行C#项目并且已经使用它(或之前的版本)已有一段时间了.
在查看遗留代码时,我看到了与参数化查询相关的几个变体,并且一直试图确定差异是什么以及是否有最佳实践.
例1: cmd.CommandText = "UPDATE table SET thing = @value;";
例2: cmd.CommandText = "UPDATE table SET thing = ?value;";
例3: cmd.Parameters.AddWithValue("@value", user_value);
例4: cmd.Parameters.AddWithValue("?value", user_value);
例5: cmd.Parameters.AddWithValue("value", user_value);
所有这些变化似乎都有效.我无法在官方文档中找到解释前缀使用差异(@vs ?)的任何内容.但是,此devart.com页面显示以下内容:
最后一点有一些语法问题,但所示的例子似乎表明,当使用' @'时,语句cmd.Parameters.AddWithValue("@value", user_value);应包括' @',但不包括' :'.
但是,在我正在审查的许多正常运行的方法中,查询@在命令文本中使用了' ' (示例1),但在语句中没有使用' ' (示例5).AddWithValue()
添加参数时省略前缀的潜在后果是什么?(例5)
使用' ?'前缀时没有理由添加参数名称,因为它是用于未命名的参数吗?(例2)
问题标题说真的 - 比VS2005慢很多,每次按键都有明显的(0.5秒)延迟.
它使代码踩踏痛苦.
当我调用Bitmap.Save函数时,会发生以下错误:"GDI +中发生了一般错误".当我从localhost调用它时,它工作,但当我从另一台计算机调用时,会发生此错误.
'/ jobnumber'应用程序中的服务器错误:
GDI +中发生了一般错误.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
例外细节:
System.Runtime.InteropServices.ExternalException:GDI +中发生一般错误.
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:
[ExternalException(0x80004005):GDI +中发生一般错误.]
System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,EncoderParameters encoderParams)+377518 System.Drawing.Image.Save(String filename,ImageFormat format)+69
System .Drawing.Image.Save(String filename)+25
Assignment.CreateBitmapImage(String sImageText,Image Image1,JobInfo job_info_param)+124
Assignment.PrintButton_Click(Object sender,EventArgs e)+271
System.Web.UI.WebControls.Button.OnClick (EventArgs e)+111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)+10
System. Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)+13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)+36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+1565
我想用两个日期更新记录,如果我没有要更新的新值,则保留现有数据.
这是一个示例表记录:
id last_foo last_bar
-- ---------- ----------
1 2010-05-30 2010-05-30
Run Code Online (Sandbox Code Playgroud)
我正在使用的查询:
UPDATE sampledates
SET last_foo = @LastFoo,
last_bar = @LastBar
WHERE id = @ID;
Run Code Online (Sandbox Code Playgroud)
如果我可以为null的日期时间 LastFoo或者LastBar是空的,我想离开现有的SQL值按原样,否则更新.
例如,假设我使用以下值更新此记录(这是C#但适用任何语言):
DateTime? LastFoo = new DateTime('2010-06-04');
DateTime? LastBar = null;
Run Code Online (Sandbox Code Playgroud)
我希望记录为:
id last_foo last_bar
-- ---------- ----------
1 2010-06-04 2010-05-30
Run Code Online (Sandbox Code Playgroud)
我知道如果值为null,我可以改变我的查询文本以省略第二列,但我想知道是否有一种方法可以保持查询原样并指定我不更改指定的列.
老实说,在ASP.Net中运行GDI +的是什么?它以如此神秘的方式工作,错误描述非常神秘:GDI +中发生了一般错误.
哦,非常感谢你现在我确切地知道出了什么问题......不是.
看看导致错误的代码,也许你可以帮助我?
var fileStream = fuImage.FileContent;
var imageStream = new MemoryStream();
imageStream.SetLength(fileStream.Length);
fileStream.Read(imageStream.GetBuffer(), 0, (int)fileStream.Length);
imageStream.Flush();
fileStream.Close();
using (var image = System.Drawing.Image.FromStream(imageStream))
{
using (Bitmap bmp = new Bitmap(image.Width, image.Height))
{
using (Graphics gr = Graphics.FromImage(bmp))
{
gr.DrawImage(image, 0, 0);
bmp.Save(path);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这实际上是我的代码的简化版本,但它仍然会导致错误.fuImage是一个FileUpload控件(.NET Web Forms).
如果出现此错误,请确保存在要保存文件的完整路径...或者您可能会收到此"常规错误"消息.
我有一个项目,它在SQL中存储值,然后检索它们进行分析.为了跟踪可能存储的值类型,我创建了一个大致如下的类:
private class DataField
{
public string FieldName;
public string FieldType;
}
Run Code Online (Sandbox Code Playgroud)
在读取值进行分析时,使用switch语句如下(简化):
switch (DataField.FieldType)
{
case "int":
List<int> InputData = new List<int>();
// Populate list from DB
break;
case "bool":
List<bool> InputData = new List<bool>();
// Populate list from DB
break;
}
Run Code Online (Sandbox Code Playgroud)
我没有在多个地方维护代码,而是在寻找摆脱switch语句的方法,但这意味着我需要根据类型动态创建集合.当前该类型是(天真地?)一个字符串,但我想我可以通过更改类来改进它:
private class ImprovedDataField
{
public string FieldName;
public Type FieldType;
}
Run Code Online (Sandbox Code Playgroud)
然后以某种方式动态创建集合:
Type DataType = typeof(DataField.FieldType);
List<DataType> InputData = new List<DataType>();
// Populate list from DB
Run Code Online (Sandbox Code Playgroud)
这当然不起作用,导致Type or namespace name expected错误.
不幸的是Type,当我寻找解决方案时,我不熟悉使用该类,也不熟悉泛型或匿名类型(似乎没有什么是合适的). …
有一个非常相关的问题:从List <string>创建List <CustomObject>但是它不处理同时删除重复项.
我有以下类示例:
class Widget
{
public string OwnerName;
public int SomeValue;
}
class Owner
{
public string Name;
public string OtherData;
}
Run Code Online (Sandbox Code Playgroud)
我想根据小部件列表创建一个所有者列表,但只有唯一的所有者名称.
这是我尝试过的:
List<Owner> Owners = MyWidgetList.Select(w => new Owner { Name = w.OwnerName }).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)
问题是结果列表中有重复.我究竟做错了什么?
我在MySQL Server 5.1中创建了一个存储过程.
如何将时间戳转换为表示该时间戳与现在之间的天,小时和分钟差异的字符串?
例如,如果时间戳是5小时3分钟前,我将得到'5小时3分钟前'.