Visual studio 2010 VSTS 2010 SGEN:错误:无法加载文件或程序集(HRESULT异常:0x8013155)

Visual studio 2010 VSTS 2010 SGEN:错误:无法加载文件或程序集(HRESULT异常:0x8013155),visual-studio-2010,msbuild,.net-4.0,tfsbuild,sgen,Visual Studio 2010,Msbuild,.net 4.0,Tfsbuild,Sgen,我在VS2010中遇到了一个奇怪的问题。我们使用TFS构建API DLL,并在项目中使用完全受信任的映射网络驱动器引用它们。我们已经这样工作了至少两年,一切都很顺利 今天,我将一个webapp转换为vs2010,当我在发行版中编译它时,它给了我: SGEN:错误:无法加载文件或 大会file:///L:\Api\Release API_20100521.1\Release\CS.API.Exceptions.dll'或其依赖项之一。活动 不支持。(不适用于 HRESULT:0x8013155)

我在VS2010中遇到了一个奇怪的问题。我们使用TFS构建API DLL,并在项目中使用完全受信任的映射网络驱动器引用它们。我们已经这样工作了至少两年,一切都很顺利

今天,我将一个webapp转换为vs2010,当我在发行版中编译它时,它给了我:

SGEN:错误:无法加载文件或 大会file:///L:\Api\Release API_20100521.1\Release\CS.API.Exceptions.dll'或其依赖项之一。活动 不支持。(不适用于 HRESULT:0x8013155)

奇怪的是,它在调试配置文件下工作

我试着添加

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

进入app.config,但仍然运气不佳(请参阅和)

我很确定这个问题来自visual studio或msbuild,因为我们的代码在prod中不会从网络共享运行,因为所有引用的dll都被复制到bin文件夹中

如果有人有一个解决方案(或只是一个搜索路径的想法),请让我知道


编辑:原来它是在调试模式下工作的,因为序列化程序集的生成已关闭。正如标题所说,这确实是一个SGEN问题,因为这个实用程序表示路径不可信

我遇到了相同的问题,在GAC中加载了程序集并工作

我只是在TFS生成服务器上遇到了相同/类似的问题,其中生成引用了来自网络共享的dll

问题在于,自以前的版本以来,CLR v4安全策略模型已发生更改,并且不像以前那样是沙盒程序集

要解决问题,只需找到sgen.exe的位置,并在同一文件夹中创建一个包含以下内容的sgen.exe.config:

<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>
<?xml version ="1.0"?>
<configuration>
<runtime>
    <loadFromRemoteSources enabled="true" />
</runtime>
</configuration>

您可以在这篇博客文章中阅读有关.NET 4.0中CAS策略的一些更改:

我可以通过在Windows资源管理器中找到程序集DLL,右键单击,选择属性,然后按“取消阻止”按钮来修复此错误。DLL中有一个流正在将其标记为外部文件,单击“取消阻止”可以删除该指定。

也有同样的问题,配置更改不起作用。只有当我在项目属性中将Generate Serialization Assembly设置为off时,它才起作用。

将下面的代码段添加到app.config文件在我的案例中起作用。我正在运行Windows XP,带有VS2010 service pack 1

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

我遇到了相同的错误,发现我的DLL被“阻止”。在资源管理器中打开DLL,右键单击->属性->按“取消阻止”


仅供参考,如果您正在运行Windows 7,可以在以下位置找到sgen.exe文件:

C:\Program Files(x86)\Microsoft SDK\Windows\v7.0A\Bin\NETFX 4.0工具


我必须创建一个sgen.exe.config并将其放在那里,然后这个问题就消失了。

我遇到了完全相同的问题,并通过在C:\Program Files(x86)\Microsoft SDK\Windows\v7.0A\Bin\NETFX 4.0 Tools下添加sgen.exe.config来修复它

正如其他人所说,使用这个简单的配置

<?xml version ="1.0"?>
<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>


无论是
解除阻止
还是
配置
都不适合我。 这个把戏对我来说是什么。 我跑


我已经准备好了,甚至不需要重新启动VisualStudio。

对于运行64位版本TFS构建服务的用户,我必须按照以下路径创建配置文件:

 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64
以及档案内容:

<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>
<?xml version ="1.0"?>
<configuration>
<runtime>
    <loadFromRemoteSources enabled="true" />
</runtime>
</configuration>


我遇到了一个类似的问题,通过删除解决方案属性文件夹中的licenses.licx文件,我最终解决了这个问题。

就像我一样,取消阻止不是一个解决方案,因为取消阻止不会出现在我的dll文件属性上。继续查找,最后关闭了我的解决方案文件,并使用本地C:copy而不是project sln文件的网络UNC路径重新打开。在走了这条路线之后,我能够发布。

在我的例子中,一堆DLL被阻止了

要取消阻止文件夹中的所有文件,我使用powershell和以下命令

dir -Path [directory path] -Recurse | Unblock-File

问题是我们不想让那些人加入GAC。我们决定关闭序列化程序集是的,我遇到了这个解决方案,但对我来说没有用,我没有改变任何事情。。。我们解析为关闭序列化程序集以获取其他信息,SGEN通常位于“C:\Program Files\Microsoft SDK\Windows\v7.0A\bin\NETFX 4.0 Tools”开发人员IT:在我的情况下,无法关闭序列化程序集的生成,因为我需要它们。但当然,旋转序列化程序集也可以是一个解决方案。请注意,如果它是一台64位计算机,则需要在VS2015的…\Bin\NETFX 4.0 Tools\x64\下创建。请将其定位在:C:\Program Files(x86)\Microsoft SDK\Windows\v10.0A\Bin\NETFX 4.6 Toolsworked。。。只有开发人员有此问题。。就在TFS。。。奇怪的是,它被锁定的原因是我的源代码被共享了。将代码移到本地磁盘-一切正常。(.NET4 SGEN对共享问题的权限)。请注意,大多数公司不允许本地管理员访问,或明确禁止普通用户(包括开发人员)访问“取消阻止”按钮。我从zip文件复制DLL时遇到此问题。我今天才遇到此问题,取消阻止所有相关的DLL文件就像一个符咒,对我来说也很有效。根据他在问题中编辑的评论,这也是OP的正确答案。为我工作。Project properties->Build->Generate serialization程序集是自动的,设置它之后,编译开始像一个符咒一样工作+1和thanx。这在我的情况下也起了作用。无论如何,我想知道关闭它的确切含义是什么,因为默认情况下,它在发布配置中处于打开状态:我希望确保在生产环境中发布应用程序时,它不会对应用程序产生任何副作用。只有一个项目存在此问题-将其从自动关闭-此项目引用了SOAP WS。