当项目位于映射的网络驱动器上时,VS2010中的Silverlight项目构建失败

时间:2011-05-15 16:45:56

标签: silverlight security visual-studio-2010 unc

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

------ Rebuild All started: Project: MySilverlightApplication, Configuration: Debug Any 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):
 error : Could not load the assembly 
         file:///H:\PRJ\VisualStudio\ExpressionBlend\Unleashed\MySilverLightApplication\MySilverlightApplication\obj\Debug\MySilverlightApplication.dll.
         This assembly may have been downloaded from the Web.  If an assembly has been downloaded from the Web,
         it is flagged by Windows as being a Web file, even if it resides on the local computer.
         This may prevent it from being used in your project. You can change this designation by changing the file properties.
         Only unblock assemblies that you trust. See http://go.microsoft.com/fwlink/?LinkId=179545 for more information.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

该项目未从Web下载(我使用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盘上制作整个项目的副本时,问题就消失了,但是,这个“解决方案”是不可取的。

此时,如果不将项目移动到本地驱动器,我真的不知道还有什么方法可以解决问题。

非常感谢任何能够提供解决方案的帮助。

约翰。

2 个答案:

答案 0 :(得分: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,在那里我得到了更好的错误信息,从而产生了解决方案。

答案 1 :(得分:1)

不确定这是否会有所帮助,但值得一试:How Do I Allow my Visual Studio .NET Projects to Run from a Network Location?