随笔分类 -  .NET

Microsoft .NET
摘要:这两天正好在做共享代码,顺便写个体会。在Visual Studio 2012的Portable项目类型之前,为跨多个技术目标类型(Client Profile、Full Framework、Silverlight等)共享代码一般有两种方式:1、共享代码间的复制,比如Class Library和Silverlight Class Library两个项目,一方简单复制另一方的源代码进行编译。好处是对于复制的代码可以进行一定程度的修改,缺点始终只是一个拷贝。2、添加链接,始终只需要修改一处,但可能存在一定程度的不兼容性,这个时候就需要通过条件编译来解决。我个人比较推崇第二种方式,对于不同类型的项目可 阅读全文
posted @ 2012-12-05 19:41 junchu25 阅读(166) 评论(0) 推荐(0)
摘要:1、加载调试扩展sos.dll,对应路径由CLR版本决定(比如:v2.0.50727、v4.0.30319).load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll2、显示当前托管堆栈,显示非托管用kb!clrstack!clrstack -akb3、显示托管线程!threads!threads -live4、显示所有线程下托管调用堆栈~* e !clrstack5、设置断点!bpmd ConsoleApplication1.exe ConsoleApplication1.Program.Main6、查看当前托管调用堆栈对象实例 阅读全文
posted @ 2012-11-12 22:51 junchu25 阅读(549) 评论(0) 推荐(0)
摘要:有一段Xml序列化的代码,基于2.0 Runtime传递到Server转换正常。当客户端在4.0 Runtime下调用,Server返回格式错误。序列化代码如下: 用Microsoft Network Monitor监视4.0 Runtime下发送的数据内容,转换后的Xml头部多出了3个字节:EF( 阅读全文
posted @ 2012-11-08 20:17 junchu25 阅读(692) 评论(0) 推荐(0)
摘要:开发人员反映原有一个功能在点击修改提交表单后,浏览器就无响应,除非关闭。之前开发、测试服务器所做的更新只有安装了.NET Framework 4.5,由于之前博客园的dudu也碰到过相同类似问题(http://www.cnblogs.com/dudu/archive/2012/09/14/ie_mv... 阅读全文
posted @ 2012-10-28 10:52 junchu25 阅读(905) 评论(0) 推荐(0)
摘要:NuGet是一个开放性的组件发布、更新平台。它允许第三方自定义Package source,对于不同开发团队之间的组件版本获取将变的更为轻松。新建一个ASP.NET Empty Web Application,选中项目右键 -> Manage NuGet Packages,在Online -> NuGet official package source中搜索NuGet.Server:安装完成后,在IIS中默认浏览,站点会返回一个Package source的地址,比如:http://localhost:7004/nuget。打开Visual Studio -> 顶部菜单 -& 阅读全文
posted @ 2012-10-26 23:41 junchu25 阅读(461) 评论(0) 推荐(0)
摘要:基于TFS管理的解决方案打开时提示:“some of the properties associated with the solution could not be read”,并不影响项目加载,Output Window也没有多余提示。用记事本打开解决方案文件,查找“GlobalSection(TeamFoundationVersionControl)”,你会发现多处定义,只保留最顶部,删除重复定义。 阅读全文
posted @ 2012-09-17 20:36 junchu25 阅读(425) 评论(0) 推荐(0)
摘要:开发人员提交一个dump文件(Windows Server 2008 R2),当前调试环境Windows Server 2012,加载sos.dl执行~* e !clrstack,提示如下错误:Failed to load data access DLL, 0x80004005Verify that 1) you have a recent build of the debugger (6.2.14 or newer) 2) the file mscordacwks.dll that matches your version of clr.dll is ... 阅读全文
posted @ 2012-09-04 15:58 junchu25 阅读(4604) 评论(2) 推荐(1)
摘要:消息中间件以不同AppDomain方式隔离加载消息处理器。其中的AppDomainWatcher类型会监控每个插件目录的文件是否变化,当发生变化时则卸载这个AppDomain,并在下次访问时新建。开发进度下,往往会频繁更新这些插件。极为偶然的情况下会出现:AttemptedtoaccessanunloadedAppDomain.atSystem.AppDomain.CreateInstanceAndUnwrap(StringassemblyName,StringtypeName) 。WinDbg附加等待错误发生,之后捕捉到一个second chance。大致内容如下: 1 ModLoad: 0 阅读全文
posted @ 2012-08-14 00:01 junchu25 阅读(2233) 评论(0) 推荐(0)
摘要:编写单元测试时,新增一个控制器的抽象类。如下定义:1 [TestClass]2 public abstract class TestControllerBase<T> : TestBase where T : Controller编写一个HomeController的单元测试:1 [TestClass]2 public class TestHomeController : TestControllerBase<HomeController>编译通过,但Test的Output窗口提示:System.TypeLoadException was unhandledMessag 阅读全文
posted @ 2012-08-13 23:17 junchu25 阅读(758) 评论(0) 推荐(0)
摘要:为了和TFS更好集成,自动化编译、测试、发布。通常我会在Debug模式下使用NUnit、Release模式下基于Visual Studio Unit Testing。在Debug模式下定义一个条件编译符号:NUNIT,部分Attribute声明为兼容Visual Studio Unit Testing。比如:1 #if !NUNIT2 using Microsoft.VisualStudio.TestTools.UnitTesting;3 #else4 using NUnit.Framework;5 using TestClass = NUnit.Framework.TestFixtureAt 阅读全文
posted @ 2012-08-11 12:04 junchu25 阅读(401) 评论(0) 推荐(0)
摘要:上周四产品上线一切运行正常,做了一点小改动后周四晚上发布,周五大量用户反馈在访问页面时出现长时间等待响应。将4台Web前端的服务器重启,缓存服务器2台重启,问题依旧。由于是生产环境,只能上去查看IIS、Windows日志,没有记录任何异常。于是将版本更新回周四凌晨发布版本,运行正常。据版本跟踪只修改... 阅读全文
posted @ 2012-08-10 10:44 junchu25 阅读(1023) 评论(3) 推荐(3)
摘要:在.NET Framework 4.0以上版本中Monitor的Enter函数新增加了一个重载版本,导致原先Castle.DynamicProxy中的LockBlockExpression在Emit时获取Enter函数从出现歧义(最新版本Castle已经解决了该问题,并且在2.5.2.0版本中DynamicProxy被合并到Castle.Core.dll中)。代码如下:gen.Emit(OpCodes.Call, typeof(Monitor).GetMethod(“Enter”));如果你手头上有Castle.DynamicProxy的源代码,可以将它修改如下:gen.Emit(OpCode 阅读全文
posted @ 2012-08-10 10:16 junchu25 阅读(310) 评论(0) 推荐(0)