Lc.exe已退出 代码为-1

问题描述:今天使用VS2010开发Jaguar,编译报错:"Lc.exe已退出 代码为-1 "

问题分析:在项目中增加了一个第三方组件,后来删除了,我的计算机上没有这个第三方组件,结果导致了LC.exe错误

问题解决
1、把项目文件夹下Properties文件夹下的licenses.licx文件删除,重新编译即可;
2、文本方式打开*.csproj文件,在文件中查找licenses.licx字样,删除对应节点。

注意:还有一种情况就是Properties文件夹下已经没有licenses.licx文件了,程序还是报这个错,这个时候你只需要重命名一个空的txt文件为licenses.licx再放入Properties文件夹,问题也可解决。

WPF中Page类继承问题

问题描述:今天做Jaguar的Kinect互动,发现C#中Page继承失败。

问题解决
在cs文件中修改StartPage继承ContentPage。报如下错误:
 “Jaguar.Page.StartPage”的分部声明一定不能指定不同的基类。
应该是XAML自动生成的StartPage.g.cs里的基类没有改变。那么随后修改xaml文件中映射的类。又报如下错误:
 “Jaguar.Page.ContentPage”不能是 XAML 文件的根,因为它是使用 XAML 定义的。
原来要被继承就必须是只有cs文件,而没有xaml文件的。所以只能保留cs文件。把所有xaml定义的转到cs代码上。
问题终于解决了。别看VS方便,其实问题特多。

C#事件不能直接继承问题

问题描述:今天做Jaguar的Kinect互动,发现C#中事件一继承后就不能调用。

代码如下:
public class ContentPage : System.Windows.Controls.Page
{
public delegate void LoadCompletedHandle(object sender);
public event LoadCompletedHandle LoadCompleted;
}
public partial class StartPage : ContentPage
{
private void VideoPlayer_MediaOpened(object sender, RoutedEventArgs e)
{
if (LoadCompleted != null)
{
LoadCompleted(this);
}
}
}

报错如下:
错误 1 事件“Jaguar.Page.ContentPage.LoadCompleted”只能出现在 += 或 -= 的左边(从类型“Jaguar.Page.ContentPage”中使用时除外) C:\Users\CouldHll\Desktop\Jaguar\Jaguar\Page\StartPage.xaml.cs 48 17 Jaguar

问题分析
事件只能从声明它们的类中调用,派生类不能直接调用在基类声明的事件。

要处理基类的事件,通常通过在基类中为事件创建受保护虚方法(OnEventName)来实现。派生类可以重写基类的OnEventName方法,也可以直接调用基类的OnEventName方法,从而实现调用基类的事件。重写基类的OnEventName方法,派生类可以截获基类正在调用的事件,对这些事件执行它自己的处理。

问题解决

代码如下:
protected virtual void OnLoadCompleted(object sender)
{
if (LoadCompleted != null)
{
this.LoadCompleted(sender);
}
}
private void VideoPlayer_MediaOpened(object sender, RoutedEventArgs e)
{
OnLoadCompleted(this);
}

AForge.NET

与OpenCV年轻的类库,使用C#。

AForge.NET is an open source C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, fuzzy logic, machine learning, robotics, etc.

官网:http://www.aforgenet.com/framework/

基于Aforge的手势识别:http://blog.csdn.net/hellogv/archive/2010/05/04/5554691.aspx

Visual Studio 2008生成.csproj会重复的bug

问题描述:
NB6K发布的时候出现:错误 103 The item "6k\confirmation.aspx.cs" was specified more than once in the "Sources" parameter.  Duplicate items are not supported by the "Sources" parameter. NetSNS.Web

问题分析:
刚刚修改了几个文件,可能是.csproj文件出现重复定义。

问题解决:
用记事本打开.csproj文件,查看重复定义的内容,删除之。一切正常了。

Microsoft.Office.Interop.Excel中Workbook.Close(false, Type.Missing, Type.Missing);保存总有保存提示框的问题。

问题描述:
近来做青岛自来水集团的项目,需要在Asp.Net中在服务器端修改Excel,功能实现了,但是发现,每次Workbook.Close(false, Type.Missing, Type.Missing);都会在服务器端弹出保存文件提示框。虽然Workbook.Save();实现保存了,但是每次还是弹出。

问题分析:
查了一些资料,可能是一个BUG。找了一个小时,终于在不起眼的网页上找到了解决方案。

问题解决:
因为在Workbook.Save();的时候没有把Workbook.Saved设置为true,导致了一只提示保存,两句语句可以解决该问题,如下:

            Workbook.Saved = true;
            Application.DisplayAlerts = false;

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005

问题描述:

用ASP.NET进行Excel服务器端操作的时候,出现如下错误:

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005

问题分析:

可能是权限问题,文件权限没有问题,可能是WEB调用COM组件权限问题。

问题解决:

1:在服务器上安装office的Excel软件.

2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"

3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"

4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应

用程序属性"对话框

5:点击"标识"标签,选择"交互式用户"

6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加

一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.

7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK

SERVICE"用户,然后赋予"本地访问"权限.

这样,我们便配置好了相应的Excel的DCOM权限.

注意:这是在WIN2003上配置的,在2000上,可能是配置ASPNET用户

由于EXCEL是在服务器上打开的,所以应该写一个把导出数据保存在服务器上,然后再传递给客户端的方法,最后每次调

用这个功能的时候再删除以前在服务器上所生成的所有Excel

---------------------------------------------------------------------------------------------------------

 另附一个解决方案:

在创建 EXCEL 应用程序时出现错误:

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005

解决办法: 配置 DCOM 中 EXCEL 应用程序:

要在交互式用户帐户下设置 Office 自动化服务器,请按照下列步骤操作:

1. 以管理员身份登录到计算机,并使用完整安装来安装(或重新安装)Office。为了实现系统的可靠性,建议您将 Office CD-ROM 中的内容复制到本地驱动器并从此位置安装 Office。
2. 启动要自动运行的 Office 应用程序。这会强制该应用程序进行自我注册。
3. 运行该应用程序后,请按 Alt+F11 以加载 Microsoft Visual Basic for Applications (VBA) 编辑器。这会强制 VBA 进行初始化。
4. 关闭应用程序,包括 VBA。
5. 单击开始,单击运行,然后键入 DCOMCNFG。选择要自动运行的应用程序。应用程序名称如下所示:

Microsoft Access 97 - Microsoft Access 数据库
Microsoft Access 2000/2002 - Microsoft Access 应用程序
Microsoft Excel 97/2000/2002 - Microsoft Excel 应用程序
Microsoft Word 97 - Microsoft Word Basic
Microsoft Word 2000/2002 - Microsoft Word 文档

单击属性打开此应用程序的属性对话框。

6. 单击安全选项卡。验证使用默认的访问权限使用默认的启动权限已选中。
7. 单击标识选项卡,然后选择交互式用户
8. 单击确定,关闭属性对话框并返回主应用程序列表对话框。
9. DCOM 配置对话框中,单击默认安全性选项卡。
10. 单击访问权限的编辑默认值。验证访问权限中是否列出下列用户,如果没有列出,则添加这些用户:

SYSTEM
INTERACTIVE
Everyone
Administrators
IUSR_<machinename>*
IWAM_<machinename>*

* 这些帐户仅在计算机上安装了 Internet Information Server (IIS) 的情况下才存在。

11. 确保允许每个用户访问,然后单击确定
12. 单击启动权限的编辑默认值。验证启动权限中是否列出下列用户,如果没有列出,则添加这些用户:

SYSTEM
INTERACTIVE
Everyone
Administrators
IUSR_<machinename>*
IWAM_<machinename>*

* 这些帐户仅在计算机上安装有 IIS 的情况下才存在。

13. 确保允许每个用户访问,然后单击确定
14. 单击确定关闭 DCOMCNFG。

VS2008水晶报表发布部总结

一、       安装运行时支撑文件

如果你安装了VS2008,那么可以找到如下目录:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5

此目录下有如下文件:

COPY到服务器上根据服务器CPU情况选择性地安装一下。

二、       将WEB项目打包成安装程序

1.         在WEB解决方案中新建一个项目,选择项如下:
2.         右键点击项目名称,选择“视图”-“文件系统”
3.         按下图操作:
4.         设置项目的启动文件:
5.         在项目名称上右击,按下图操作,选“项目输出”:
6.         选“内容文件”后再“确定”:
7.         按SHIFT+F6即可生成安装文件,可以在项目的目录下能找到如下结果文件:

Copy这个MSI文件到服务器上安装完就可以浏览了。

三、       修补水晶报表的图标显示和打印功能

问题:如上所述,是可以浏览了,但是报表显示的工具栏上图标出不来:如下:

看到吗,小图标出不来。其它你再试试,打印也没法选打印机的。

解决办法:

1.         在自己开发的PC上找到如下目录:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETClientFiles\CrystalReportWebFormViewer4

注意:CrystalReportWebFormViewer4中的4有可能与你的不一样,无所谓的。

2.         将CrystalReportWebFormViewer4目录复制到你的WEB服务器上项目所在目录中,如:

C:\???????\aspnet_client\system_web\2_0_50727\CrystalReportWebFormViewer4

再试试看吧,问题解决!

祝好运!

MARK

一些图片没有下来,留下地址

http://blog.sina.com.cn/s/blog_4dde37650100b9ey.html

 

前几天用VS2005做了个简单的医务系统的演示程序,B/S模式的,里面用到了水晶报表,说实话,这还是我第一次用水晶报表,看了看帮助就开始做,还算是顺利吧,以为是演示用,要求不太高.做完了就发布,然后就把程序给人家了,结果到了人家那水晶报表那块不能看!他说水晶报表发布的时候需要考几个库,VS 发布的时候不能自己把dll文件打包放到里面去,我就把那两个文件(CRDesigner.dll,crvspackage.dll,放在VS安装目录的 Crystal Reports文件夹里)给人家考了过去,结果还是不行,后来上网查说需要Crystal Reports 合并模块,从网上down了一个,做一个了安装程序把它装上了也行不通,没办法回来了。
      今天参看以下帮助文件,说合并模块可以到http://www.businessobjects.com/products/dev_zone/net/2005.asp去下载,地址是假的,转到msdn上了。我想合并模块可能不行了,我就开始找Crystal Reports for .NET Framework 2.0 Windows 安装程序,结果发现VS2005的安装目录里已经有这些东西了,Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages这个文件夹里有好多东西,不光是水晶报表,还有框架,中文包,MDAC2.8以前不知道部署的时候还得从网上down这些东西,现在不用了!
从CrystalReports里把水晶报表装上就可以了!CRRedist2005_x86.msi/CRREdist2005_x86_chs.msi 这两个文件在MSDN里也有描述,下面是摘自MSDN
"如果添加的合并模块多于方案中指定的数目,可能会引起部署问题。将合并模块文件保存在计算机上的 C:\Program Files\Common Files\Merge Modules "
2005需要的合并模块式CrystalReportsRedist2005_X86.msm这个文件夹里没有!
还好问题解决了!

2008
-------------------------------

在安装有vs2008的电脑中,找到以下文件夹:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5。

将该文件夹下的CRRedist2008_x86.msi,安装到在要部署的机器上即可。

Webservice中LinqToSQL执行ToList序列化产生循环引用错误

问题描述:在做Tiffany的时候,用到Linq通过Webservice返回数据给Flash。但是当执行结果集.ToList()的时候出现如下错误:
System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException: 序列化类型 Tiffany.Photo 的对象时检测到循环引用。
在 System.Xml.Serialization.XmlSerializationWriter.WriteStartElement(String name, String ns, Object o, Boolean writePrefixed, XmlSerializerNamespaces xmlns)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_Photo(String n, String ns, Photo o, Boolean isNullable, Boolean needType)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write2_Vote(String n, String ns, Vote o, Boolean isNullable, Boolean needType)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_Photo(String n, String ns, Photo o, Boolean isNullable, Boolean needType)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write5_ArrayOfPhoto(Object o)
在 Microsoft.Xml.Serialization.GeneratedAssembly.ListOfPhotoSerializer.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
在 System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces)
在 System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o)
在 System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse response, Stream outputStream, Object returnValue)
在 System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
在 System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
在 System.Web.Services.Protocols.WebServiceHandler.Invoke()

问题分析:查看报错内容,“检测到循环引用”说明Linq的关系引用上存在问题。

问题解决:打开DataClassses-关联-子属性-访问权限,改为Internal

Asp.Net中Response.Write()导致页面CSS无效

问题描述:在修改NB网站的时候,发现响应按钮后出现全部字体变大现象,即不受CSS样式控制。

问题查找:因为这个响应按钮的方法内语句比较少,Response.Write()尤为惹眼,猜想是因为直接输入而产生了此问题:Response.Write("<script>alert('请勾选“本人已阅读兑换细则”')</script>");

问题求证:删除语句后发现果然一切正常了。

问题分析:Response.Write()是输出到页面的最顶端,导致了页面不符合DTD规范:
<!-- DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" -->

问题解决:使用微软推荐方法:Page.RegisterStartupScript("submitImageButtonClick", "<script>alert('请勾选“本人已阅读兑换细则”')</script>");
第一个参数是Script的名字,随便取。
第二个参数是Script,直接贴上去就行。