惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
C
CERT Recently Published Vulnerability Notes
P
Proofpoint News Feed
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
H
Help Net Security
Recorded Future
Recorded Future
The Register - Security
The Register - Security
F
Full Disclosure
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hackread – Cybersecurity News, Data Breaches, AI and More
爱范儿
爱范儿
Security Archives - TechRepublic
Security Archives - TechRepublic
Simon Willison's Weblog
Simon Willison's Weblog
Cisco Talos Blog
Cisco Talos Blog
I
InfoQ
T
Tenable Blog
T
Tor Project blog
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
NISL@THU
NISL@THU
Google DeepMind News
Google DeepMind News
博客园 - 叶小钗
B
Blog
V
V2EX
Jina AI
Jina AI
L
LangChain Blog
月光博客
月光博客
W
WeLiveSecurity
U
Unit 42
AWS News Blog
AWS News Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 聂微东
V
Visual Studio Blog
A
Arctic Wolf
T
Tailwind CSS Blog
The Cloudflare Blog
SecWiki News
SecWiki News
S
SegmentFault 最新的问题
Hacker News - Newest:
Hacker News - Newest: "LLM"
宝玉的分享
宝玉的分享
MyScale Blog
MyScale Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Securelist
www.infosecurity-magazine.com
www.infosecurity-magazine.com
腾讯CDC
雷峰网
雷峰网

博客园 - kevin

[转]软件开发者面试百问 招聘c#工程师3名-深圳 [编评]从08软件行业薪酬行情聊“软件已经走下圣坛?” SQLServer数据库的备份/恢复的3中策略实例 .Net混淆研究(二)---主流工具的比较分析 WebService 操作超时的问题及其解决办法 - kevin - 博客园 [收集]C# 3.0,3.5 相关资源下载 网络负载平衡(NLB)资料收集 .Net混淆研究(一)---基本原理和利弊 关于时间转字符串的格式设置的几种策略 .Net构建于使用web service 实例 [转载]索引的优点和缺点----数据库设计、面试必看 警惕招聘诈骗 网络一大抄,无耻的网站 珠海软件环境如何?东方海外呢? “深圳退保潮”之你知道吗? 设计模式-看 "泡妞之桥梁模式" 随想 [推荐][转]小菜编程成长记 一篇好文解释为何房价如此高,肉价涨得这么快[转帖]
【编选】单元测试error MSB3113的解决办法
kevin · 2008-06-21 · via 博客园 - kevin

单元测试启动调试或运行时出现error MSB3113: Could not find file 'Microsoft.Windows.CommonLanguageRuntime, Version=2.0.50727.0'.

这是什么意思?

CLR找不到?smile_whatchutalkingabout 安装的Team Suite调试dll项目都运行的OK啊,这么突然不行了呢? 

第一招,关闭,重启VS2005,错误还在,5555

难道是.net坏了?要重装VS2005?不是吧? 才刚装的啊。。。。。

第二招,Google
还好,microsoft似乎早发现了这个问题,看看来自官网的说明(CLR not found):

When you build a solution of a Microsoft Visual Basic 2005 Windows Application project in Microsoft Visual Studio 2005, you may receive an error message that is similar to the following:

error MSB3113: Could not find file 'Microsoft.Windows.CommonLanguageRuntime, Version=2.0.50727.0'.

CAUSE

This problem may occur if all the following conditions are true:
•The solution contains an application that has a reference to another application in the same solution.
•You publish the referenced application to a UNC share or to a Web page.

.....
To work around this problem, use a file reference instead of a project reference in the solution of the Visual Basic 2005 Windows Application project.

里面只提到VB2005,但我使用的是C# 2005的,不管是不是,试一下就知道了。 试一下,OK哦。。

以前的工程为什么没出现这个错误?

对于产生问题的第一个条件我的程序是满足的,而且我相信大家的程序也大都满足这个条件,因为你一般都有一个测试项目,而测试项目一般会引用同一个解决方案里的其它项目,而这些项目之间必然有依赖的关系。

Google的时候发现出现报这个问题的人也不多,没多少提出这个错误的,可能这主要是第二个条件没有得到满足,因为对于win form的项目我们一般不会把它们发布到UNC共享路径下,更加不会把它发不到一个web site上去。

把对项目的引用换成直接引用项目生成的dll。这招不怎么好,如果你引用的项目做了修改必须重新添加引用。如果你的项目数目很多,不好意思,有点耐心慢慢加吧。

但是当Click Once出现之后情况就不一样了。如果你用过Click Once技术来发布应用程序,应该知道在发布的时候需要指定发布的地址,“很巧”,这个路径就是一个UNC共享路径或者是一个Web Site。不巧的是昨天我正好用Click Once的方式发布了我的WordDocumentParser V2.0.5.2,接下来的情形就是你们看到的了。

那简单,把Click Once请走不就可以了吗?上了贼船就不要想溜了:-)Click Once这个被MS吹得一塌糊涂的技术,不知道是不是太强了,抑或是我了解的不够深入,反正我是请不走它。不过好像C#的MVP也是拿它没办法,看看“Have you ever seen MSB3113 and MSB3114 errors?”。

ClickOnce的其它问题

“ClickOnce-ed 之后程序的配置怎么办?”

  1. 你知道程序被安装在哪里了吗?
    如果你直接在系统里一个个文件夹找,可能花上好长的时间,而且不一定能找得到,因为路径实在是没有一点可读性。看看我的WordDocumentParser2.0.5.2安装后是什么样的路径:
    C:\Documents and Settings\ld.SSTC.000\Local Settings\Apps\2.0\14VVC6O0.W75\5HJP1NQ1.DHV\word..tion_f25e17f6175c148c_0002.0000_83cf034d7666f876
    划线部分可能还可以看出点东西,可是其它的呢?如果要找的话我建议直接在注册表里搜索安装程序的名字,比如这里的WordDocumentParser,在找到的结果中有一个是“程序\开始\按装程序的快捷方式”,看它的键值就知道路径了。很费劲,我想MS没打算让我们知道路径。
  2. 客户需要自定义配置文件,在哪里修改呢?
    比如我部署到客户端的时候数据库可能要改成正式的库。一般情况下我就是接改hibernate.cfg.xml文件,可是在ClickOnce之后,到哪里找这个文件?不在前面说的程序安装路径下吗?我们倒是希望这样,可是事实是在:
    C:\Documents and Settings\ld.SSTC.000\Local Settings\Apps\2.0\Data\OJYXYKTM.5BN\QJ6OQADO.2TX
    \word..tion_f25e17f6175c148c_0002.0000_83cf034d7666f876\Data
    在修改配置文件之前,你最好确认一下程序与配置文件的对应关系,可以通过f25e17f6175c148c_0002.0000_83cf034d7666f876这串字符来确认。顺便说一下配置文件路径右面为什么有个Data,这是因为在ClickOnce的时候它是作为程序的数据文件发布的,所以除了配置文件之外的其它数据文件也会放在这里。
    不过这样是在太烦了,每升级一次就得修改一次配置文件,当然你可以把数据库配置等功能写在程序里面,但是那也是开发量,为什么不能是真正的AutoUpdate呢?
  3. 升级,是真的“升级”吗?
    如果这里说的升级是指下载一些更新包,然后替换一些原有的,那么很抱歉,不是的。所谓的更新实际上是从新下载了一个新版本的程序,并在上一版本的父目录下下安装了另一个副本,然后将快捷方式修改并指向新的程序。

资料内容来源: http://raderdotnet.spaces.live.com/Blog/cns!3461738A506327E!371.entry
本文保留主要内容,但按照个人研究问题的思路重新编排了。 记录之以便自己查阅。如能给其他遇此问题的同仁以参考且感觉比原文易读,则甚幸。

                                  Collect and Edited By kevin