小编Fra*_*nia的帖子

Windows Phone - 指向应用商店中发布者的链接

我创建了几个Windows手机应用程序,我想链接到我的发布者页面,以显示我发布的所有应用程序.请注意,我正在使用C#和XAML 开发适用于Windows Phone 7.x的应用程序.

UPDATE

我想要做的是显示以下发布者页面:在Windows Phone中,导航到Windows Phone存储,然后选择任何应用程序,然后选择"更多来自<Publisher>"链接.这会显示所有发布商应用的移动视图.但我无法弄清楚如何直接从我的应用程序中调出该发布者页面.任何帮助,将不胜感激!

选项1)直接链接到我的发布者页面的URL(使用WebBrowserTask)

问题)商店的所有链接似乎都需要在URL中嵌入en-US语言.我担心其他国家/地区的用户会发生什么.

示例:http:/www.windowsphone.com/ zh-CN/store/publishers?publisherId = Microsoft%2BCorporation

是否有与语言无关的方式链接到商店中的发布者?

选项2)使用MarketplaceDetailTask​​链接到发布者

问题)从我所看到的,这只能用于链接到应用程序.我尝试使用我的发布者GUID并得到:市场错误 - 很抱歉,我们现在无法完成您的请求.

MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
marketplaceDetailTask.ContentType = MarketplaceContentType.Applications;
marketplaceDetailTask.ContentIdentifier = <My Publisher GUID>;
marketplaceDetailTask.Show();
Run Code Online (Sandbox Code Playgroud)

选项3)使用MarketplaceSearchTask链接到发布者

问题)这允许用任何字符串搜索商店.问题是,当我将我的出版商名称放在搜索字符串中时,除了我的以外还会显示其他应用程序.我的发布商名称包含一个常用字词,任何显示该字词的应用都会显示.

MarketplaceSearchTask searchTask = new MarketplaceSearchTask();
searchTask.ContentType = MarketplaceContentType.Applications;
searchTask.SearchTerms = "<My Publisher Name>";
searchTask.Show();
Run Code Online (Sandbox Code Playgroud)

任何想法或建议将不胜感激!谢谢.

c# publisher marketplace windows-phone-7

5
推荐指数
1
解决办法
1277
查看次数

Autofac:如何加载引用但未直接使用的程序集

我们使用Autofac for DI创建了一个WebApi解决方案.我们将autofac的引导分解为一个单独的项目.这样,我们的WebApi项目仅引用我们的Bootstrap和Contracts项目.然后我们的引导项目引用所有其他组件并将所有内容连接在一起.我喜欢这种设计用于分离关注点.

我们可以按如下方式手动加载我们的程序集 - 我们的"AutofacModule"类包含注册每个模块(程序集)的必要信息.

ContainerBuilder builder = new Autofac.ContainerBuilder();
builder.RegisterModule(new Business.AutofacModule());
builder.RegisterModule(new Data.AutofacModule());
builder.RegisterModule(new Services.AutofacModule());
etc...
Run Code Online (Sandbox Code Playgroud)

这有效,但需要对每个程序集进行硬编码.我们试图使这个动态化,以便我们可以循环遍历所有引用的程序集,如下所示.

var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>();
foreach (var assembly in assemblies)
{
    builder.RegisterAssemblyModules(assembly);
}
Run Code Online (Sandbox Code Playgroud)

这应该有效,但不行.问题是.Net确定在引导程序项目中实际上没有使用各种程序集而不加载它们(试图优化?).所以我们的一些程序集从未加载过.

我还尝试了以下循环bin目录来查找所有程序集.但是,在编译期间,.Net不会将未引用的程序集移动到bin目录中,因此它们也不存在.

string assemblyPath = System.IO.Path.Combine(
    System.AppDomain.CurrentDomain.BaseDirectory, "bin");
var allAssemblies = new List<Assembly>();
foreach (string dll in Directory.GetFiles(assemblyPath, "*.dll"))
{
    allAssemblies.Add(Assembly.LoadFile(dll));
}
Run Code Online (Sandbox Code Playgroud)

我已将程序集设置为"复制本地",但无效.我读到了一个Copy Local错误,并尝试了一些不起作用的解决方法.

有没有人能够解决这个问题?看起来Autofac会提供一个解决方案,但我发现他们的文档上只有一个待办事项页面:http: //autofac.readthedocs.org/en/latest/faq/isolate-autofac.html

以下两个问题是相似的,但是所提出的解决方案都没有克服所需程序集不在bin目录中的事实.

并非所有程序集都从bin文件夹加载到AppDomain中

即使未在代码中明确使用,也要加载所有引用的程序集.NET

最后,我很好奇,这是一个Autofac特定的问题吗?其他DI容器如何解决这个问题?我发现了NInject的类似问题. 加载未引用的dll MVC Ninject

.net c# dependency-injection autofac asp.net-web-api

3
推荐指数
3
解决办法
8000
查看次数