gpt4 book ai didi

.net - 不能使用痣来模拟MVC框架

转载 作者:行者123 更新时间:2023-12-04 20:54:10 26 4
gpt4 key购买 nike

我正在尝试为 System.Web.Mvc DLL 版本 3 生成痣,但出现以下错误:

 Moles : info : metadata : loading C:\TFS.as12.Projects\Project X\Main\Source\3rdPartyComponents\MVC3\System.Web.Mvc.dll
Moles : info : compilation : output assembly name: System.Web.Mvc.Moles
Moles : warning : metadata : failed to load module System.Web.Mvc.dll:
Moles : warning : metadata : Inheritance security rules violated by type: 'System.Web.Mvc.CompareAttribute'. Derived types must either match the security accessibility of the base type or be less accessible.
Moles : warning : metadata : Inheritance security rules violated by type: 'System.Web.Mvc.RemoteAttribute'. Derived types must either match the security accessibility of the base type or be less accessible.
Moles : error : code : assembly contains no types or failed to load properly
00:00:00.53> moles generator 1 errors, 3 warnings

Moles compilation FAILED - 6,18794176354816s
C:\Program Files (x86)\Microsoft Moles\bin\Microsoft.Moles.targets(79,5): error MSB3073: The command ""C:\Program Files (x86)\Microsoft Moles\bin\moles.exe" @"C:\TFS.as12.Projects\Project X\Main\Source\X.Web\X.Web.Base.Mvc.UnitTest\obj\Debug\Moles\moles.args"" exited with code -1002.

我在微软论坛上看到了更多关于这个的问题,但从来没有答案。
有没有人有办法解决吗?

最佳答案

这与known issue有关.如果您决心在 MVC3 中使用 Moles,您可以执行以下操作(我已经这样做了):

  • 下载MVC3 source code .
  • 从 Properties/AssemblyInfo.cs 中删除 [SecurityTransparent]
  • 使用 sn.exe 从真正的 MVC dll 中提取 MS 公钥:“sn -e System.Web.Mvc.dll ms_public_key.snk”
  • 告诉 VS 在对您的假 MVC dll 进行签名时使用该公钥(您可以在项目属性、签名下执行此操作)。确保选中“仅延迟标志”框。
  • build 。现在你有一个用 MS 公钥签名的假 MVC dll。但是你不能将它用于任何事情,因为它不会通过签名验证。
  • 再次使用 sn.exe 为您的假 dll 注册跳过验证:“sn -Vr System.Web.Mvc.dll”<--- 这需要是您的假 dll
  • 使用 gacutil.exe 将您的假冒产品 GAC:“gacutil -if System.Web.Mvc.dll” <--- 又是假冒产品
  • 跑痣。我强烈建议您 stub /痣整个 dll,因为您不想再次这样做。
  • 删除跳过验证:“sn -Vu System.Web.Mvc.dll”<--- 假的
  • 还原真实dll:“gacutil -if System.Web.Mvc.dll”<---真实的
  • 删除你邪恶的假 MVC dll 以免有人不小心使用它。

  • 由于您进行了公钥切换,您在第 8 步中生成的 System.Web.Mvc.Moles.dll 将引用真正的 MVC dll。您可以使用它来 stub /嵌入 MVC 类,以满足您的需求。

    关于.net - 不能使用痣来模拟MVC框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6620487/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com