1

我只是在学习 Blend/Silverlight/VS2010/.net/etc。我有一个驻留在网络驱动器上的简单项目。当我告诉 VS2010 重建项目时,我收到以下错误消息:

------ 重建所有开始:项目:MySilverlightApplication,配置:调试任何 CPU ------
  MySilverlightApplication -> H:\PRJ\VisualStudio\ExpressionBlend\Unleashed\MySilverLightApplication\MySilverlightApplication\Bin\Debug\MySilverlightApplication.dll

C:\Program Files\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight.Common.targets(214,9):
 错误:无法加载程序集
         file:///H:\PRJ\VisualStudio\ExpressionBlend\Unleashed\MySilverLightApplication\MySilverlightApplication\obj\Debug\MySilverlightApplication.dll。
         此程序集可能已从 Web 下载。如果已从 Web 下载程序集,
         它被 Windows 标记为 Web 文件,即使它位于本地计算机上。
         这可能会阻止它在您的项目中使用。您可以通过更改文件属性来更改此名称。
         仅取消阻止您信任的程序集。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=179545。
==========全部重建:0成功,1失败,0跳过==========

该项目不是从网上下载的(我使用 Blend 创建的。)经过一番搜索,我猜测问题可能是由于 .net 安全设置造成的。我发出了以下命令:

C:\Program Files\Microsoft Visual Studio 10.0\VC>caspol -m -ag 1.3 -url "file://\\p4dc\h$\*" FullTrust

希望能解决问题。p4dc 是服务器机器的名称,h$ 是服务器上 h: 驱动器的管理共享,该驱动器又映射到本地机器上的驱动器号“H”(\\p4dc\h$ 映射到 H在本地机器上)。

那并没有解决问题。我不知道我的 caspol 命令是否正确(我不打算即时学习 caspol),这似乎是一个合理的尝试。当我在本地 C 驱动器上复制整个项目时,问题就消失了,但是这种“解决方案”是相当不可取的。

在这一点上,我真的不知道在不将项目移动到本地驱动器的情况下还有什么方法可以解决问题。

非常感谢任何导致解决方案的帮助。

约翰。

4

2 回答 2

6

VS2010 显示的错误消息会导致任何人认为问题出在信任和安全性上,但实际上,再多的允许对网络驱动器的完全信任也无法解决问题。

导致解决方案的原因是首先将项目移植到 VS2008 以查看它是否会遇到相同的问题。VS2008 非常乐意毫无怨言地运行该项目。

然后我将 VS2008 项目(正在运行)转换为 VS2010。VS2010 拒绝构建项目,但这次错误消息不同,指的是“远程程序集”和 MSDN 上的链接,这导致了解决方案。

真正的问题是 VS2010 将网络驱动器上的程序集视为“远程程序集”(就像从网站加载程序集一样。) Caspol 无法解决该问题(似乎应该有,但是,这可能是我的错,我不熟悉使用 Caspol)。

为了结束这个长篇故事,错误消息中提供的链接是:

http://msdn.microsoft.com/en-us/library/dd409252(VS.100).aspx

按照该链接中的说明编辑“machine.config”后,我更改<runtime/>为:

<runtime>
  <loadFromRemoteSources enabled="true"/>
</runtime>

该项目成功构建并顺利运行。

感谢 Alison 和 CodeNaked 提供的帮助,

约翰。

PS:如果VS2010最初显示“更好”的错误消息,那就太好了。相反,我不得不将 VS2010 非工作项目移植到它工作的 VS2008,然后将那个移植到 VS2010,在那里我得到了更好的错误消息,从而导致了解决方案。

于 2011-05-17T00:20:14.377 回答
1

不确定这是否会有所帮助,但值得一试:如何允许我的 Visual Studio .NET 项目从网络位置运行?

于 2011-05-16T12:54:35.143 回答