【问题标题】:Is InternalsVisibleTo available to allow MonoTouch Unit Tests access to the internal of a MT Lib?InternalsVisibleTo 是否可用于允许 MonoTouch 单元测试访问 MT Lib 的内部?
【发布时间】:2012-12-30 18:10:13
【问题描述】:

您能否在 MonoTouch 库的 AssemblyInfo 文件中使用 InternalsVisibleTo 程序集属性来允许 MonoTouch 单元测试 (Touch.Unit) 访问 MonoTouch 库的内部?

这是一个非常适合在非 MonoTouch 世界中使用的东西,它允许测试内部结构而无需跳过障碍。但是我无法让它与 MonoTouch 单元测试一起工作。所以在我继续之前,我想我会问这是否可能,因为这是一个作为测试运行器的 iOS 应用程序,所以不确定编译为本机代码的 iOS 应用程序是否可以做到这一点。

【问题讨论】:

    标签: xamarin.ios internalsvisibleto touch.unit


    【解决方案1】:

    是的,它应该(或者它是一个错误),即使我不记得自己尝试过。

    关键是[InternalsVisibleTo] 主要是一个编译器技巧,它由 MonoTouch 附带的 C# 编译器 (smcs) 支持(因为它在 BCL 中使用)。因此,它没有理由不能在基于 Touch.Unit 的应用程序中运行。

    现在请记住,所有其他规则仍然适用。例如。如果托管链接器在所有 unused 代码将被删除(即使标记有属性)时启用。

    【讨论】:

    • 那么我遇到的问题有两个方面:1) Touch.Unit 应用程序没有被签名和强命名。我已将其设置为签名和强命名,但它不使用该信息。 2) Touch.Unit 应用程序没有获得汇编版本。它的版本始终是 0.0.0.0,即使我有一个 AssemblyInfo.cs 声明它应该是 1.0.0.0。我也尝试了所有 3 个链接行为并且没有任何变化。我只是想让它先在模拟器中工作,然后再在硬件上尝试。
    • MD 提供的错误信息是:Error CS0281: Friend access was granted to 'MonoTouchUnitTests, PublicKeyToken=0c7aa341ab3f9c12',但输出程序集命名为'MonoTouchUnitTests, Version=0.0.0.0, Culture=neutral , PublicKeyToken=null'。尝试添加对“MonoTouchUnitTests,PublicKeyToken=0c7aa341ab3f9c12”的引用或更改输出程序集名称以匹配它
    • @RodneyFoley 这看起来像是构建问题 - 这比可能影响 Touch.Unit 的运行时问题要早得多。请将您的解决方案附加到错误报告中,我们将对其进行查看(可能与配置相关,但工具可能隐藏了 正确 选项)。
    • 我已经在 Xamarin 论坛上发布了这个,这是解决方案。我也会写一个错误,谢谢。 cdn.vanillaforums.com/xamarin.vanillaforums.com/FileUpload/38/…
    猜你喜欢
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2013-08-12
    相关资源
    最近更新 更多