我需要获得一些关于调用我的组件的程序集的元数据.因此,使用Assembly.GetCallingAssembly()似乎很自然.但是,我发现除了 Windows应用商店外,它无处不在.它支持的地方:

> Phone 7.0+
> .Net 1.0
> Portable Class Libraries

但是,不支持的位置直接位于Windows应用商店应用程序中.我可以创建一个可移植的类库,然后从Windows应用程序内部调用它,但我不能直接将它放在Windows应用商店应用程序/类库中.

是否有解决方法来获取由Assembly提供的元数据类型或其他方式?

Assembly.GetCallingAssembly没有在WinRT中公开 – 据说是因为它的语义在内联等方面是不可靠的( source),但它也不适合Windows Store应用程序中允许的受限反射.你可以得到像Assembly.GetCurrentAssembly()这样的东西,例如:
typeof(MainPage).GetTypeInfo().Assembly

但那根本不一样.使用受限制的反射模型,也无法在.NET中获得运行时的堆栈跟踪.

至于可移植类库,我当然会说可以在可移植类库中支持Assembly.GetCurrentAssembly(),但不是在WinRT中 – 如果它不在那个平台中就有意义.但实际上,它似乎存在于包括WinRT在内的所有配置文件中,除了WinRT .NET4.5之外 – 似乎必须在某种程度上忽略这种不一致性.因此该方法存在于WinRT中(而且还没有进行重定向),但在编译时可用的元数据中不可见.

因此,您可以使用反射调用该方法:

var assembly = (Assembly) typeof(Assembly).GetTypeInfo()
    .GetDeclaredMethod("GetCallingAssembly")
    .Invoke(null,new object[0]);

我认为在Windows应用商店应用中这种方法的不可见性是“我们希望这会消失”.

(这个答案只涉及“我可以”而不是“我应该”).

.net – WinRT不支持Assembly.GetCallingAssembly,但适用于可移植类库?的更多相关文章

  1. ios – App Store提交的最大屏幕截图数

    我正在研究找出将应用程序提交到iOS应用商店所需的元数据要求.在没有注册Apple开发者计划的情况下,我无法找到提交时允许的屏幕截图数量的任何信息.任何人都可以开导我吗?

  2. 应用商店 – 自定义B2B应用的复选框未在iTunes连接中显示

    我想将一个应用程序作为自定义b2b应用程序带给AppleStore.唯一的问题是我的iTunes连接没有选项.这个B2B计划在德国不可用吗?我找不到任何具体的信息.也许你们中的一个有同样的问题.解决方法我有同样的问题,复选框不在那里.确保在iTunesConnect内您已经同意在“合同,税务和银行”下的相关合同.一旦你要求并同意这些,复选框应该出现.

  3. xcode4 – 如何从应用商店强制安装XCode 4.1?

    解决方法只是为了进一步解释…AppStore的下载实际上有效当您看到Xcode时看到的是您的旧安装,因为您还没有运行安装程序.只需在应用程序文件夹中找到“XCode安装程序”,然后运行该程序即可完成安装.它也吸引了我.

  4. android – 如何在没有身份验证的情况下从Google Play商店请求应用信息

    我做了一些研究,偶然发现了以下(可能是非官方的)网址,用于从AndroidPlay商店查询应用详情.但基于非官方谷歌市场api,我猜这个是使用身份验证令牌显然有一种方法可以请求Android应用程序的详细信息,而无需登录到谷歌帐户–这就是谷歌播放网站在网络浏览器中浏览时的工作方式.我无法找到任何关于如何实际操作的指导.我开发的项目中没有任何非官方的库或代码,它也不能使用任何私有的androidAP

  5. android – Timed Publishing如何在Google Play中使用新版本(更新)?

    我知道TimePublishing适用于商店列表,例如描述和截图.但我不确定如何发布新版本.我想上传apk,创建一个版本并添加新的描述和截图,并保持一切准备生产并在发布活动中上线.但我的问题是在发布中只有一个按钮“开始推广到生产”.如果我点击它,它会立即提交生产吗?如何控制确切的上线时间?Nooo,我们想使用TimedPublishing!

  6. Android增强现实应用的图像识别

    首先,抱歉我的英语不好.我打算为Android移动平台构建一个增强现实应用程序,主要功能是用户拍摄商店的能力,应用程序识别他正在拍摄的商店.我不知道最好的选择是使用现有的图像识别api,但我认为它会更具体.也许拥有一组图像会有所帮助.我的计划是拥有一个商店数据库及其位置,并使用许多工具之一进行图像识别,并在我的数据库中搜索到同一位置.但我发现所有搜索引擎图像(kooba,iqengines等)都不

  7. android – 是否可以传递url参数到谷歌播放? (传递查询字符串)

    是否可以传递url参数到谷歌播放和跟踪变量,而安装在手机应用程序?

  8. .net – WinRT不支持Assembly.GetCallingAssembly,但适用于可移植类库?

    我需要获得一些关于调用我的组件的程序集的元数据.因此,使用Assembly.GetCallingAssembly()似乎很自然.但是,我发现除了Windows应用商店外,它无处不在.它支持的地方:>Phone7.0+>.Net1.0>PortableClassLibraries但是,不支持的位置直接位于Windows应用商店应用程序中.我可以创建一个可移植的类库,然后从Windows应用程序内部调

  9. Desktop App Converter /提交到Windows应用商店

    我有一个较旧的应用程序,我使用Microsoft的“桌面应用程序转换器”转换为创建UWP应用程序.该应用程序似乎转换得很好,我可以在我的本地计算机上安装和运行它.不幸的是,当我尝试将应用程序提交到WindowsAppStore时,我收到以下错误:包接受验证错误:我们不允许您指定的功能:runFullTrust.程序包接受验证错误:您无权在程序包DownloadManager.appx:http:/

  10. Windows桌面应用程序和Windows应用商店应用程序有什么区别

    我在网上看了几篇帖子,但我还没有理解它们之间有什么区别.有人可以澄清一下吗?

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部