小编Vla*_*lad的帖子

Console.Writeline工作在x86但不是x64

我正在测试visual studio 2012中的一个项目.

当我在x86中运行我的代码时,会Console.Writeline在输出窗口中显示.但是,当我在x64中运行它时,它没有.

我知道我可以使用System.Diagnostics.Debug,但我真的很想知道为什么Console.Writeline不工作,或者某个地方有设置.

谢谢.

编辑:观察:两个版本都禁用Visual Studio托管过程.当我启用它时,所有Console.Writeline消息都显示为x64和x86.当我再次禁用它时,只显示x86 Console.Writeline.

c# console.writeline visual-studio visual-studio-debugging

7
推荐指数
1
解决办法
2019
查看次数

如何在STA线程上与Bootstrapper同时运行动画SplashScreen

背景:

我正在开发一个WPF应用程序,它使用MEF框架自动链接应用程序所需的库和组件.随着人们添加自己的组件,在较慢的机器上加载需要0-2秒到6-7秒.为此,我认为一个漂亮的启动画面让用户知道应用程序正在加载是必要的.理想情况下,初始屏幕将显示动画进度条以及描述正在加载哪些组件的状态文本字段.

问题:

我设计了一个启动画面窗口,在应用程序开始时调用(OnStartup),然后加载MEF引导程序.问题当然是,窗口没有动画,因为它与MEF引导程序加载在同一个线程上.我尝试将引导程序放在一个单独的线程上,但它抱怨它不是一个STA线程.即使在STA线程上它仍然不喜欢它并且在尝试加载主应用程序窗口时它会引发错误.我不能把启动画面窗口本身放在一个单独的线程上,因为我无法访问它,它也必须是一个STA线程,因为它是一个UI组件.(意识到这是不真实的,我可以和线程交谈)

更新

我找到了一个解决方案,我将启动画面窗口保存在一个单独的STA线程中.谢谢大家的回复,指出我正确的方向:

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        Dispatcher threadDispacher = null;
        Thread thread = new Thread((ThreadStart)delegate
        {
            threadDispacher = Dispatcher.CurrentDispatcher;
            SynchronizationContext.SetSynchronizationContext(new DispatcherSynchronizationContext(threadDispacher));

            loadingWindow = new LoadingWindow();
            loadingWindow.Closed += (s, ev) => threadDispacher.BeginInvokeShutdown(DispatcherPriority.Background);
            loadingWindow.Show();

            System.Windows.Threading.Dispatcher.Run();
        });

        thread.SetApartmentState(ApartmentState.STA);
        thread.IsBackground = true;
        thread.Start();

        var bootstrapper = new Bootstrapper();
        bootstrapper.Run();

        if (threadDispacher != null)
        {
            threadDispacher.BeginInvoke(new Action(delegate { loadingWindow.Close(); }));
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading mef splash-screen

6
推荐指数
1
解决办法
1116
查看次数

Collection <T>的最大容量与x86的预期不同

关于集合中可以包含的最大项目数的主要问题,例如List.我在这里寻找答案,但我不理解这个推理.

假设我们正在与一个List<int>具有sizeof(int)= 4个字节......每个人都似乎是确保为64,你可以有一个最大268435456 int和x86的最大134217728 int.链接:

但是,当我自己测试时,我发现x86并非如此.谁能指出我可能出错的地方?

//// Test engine set to `x86` for `default processor architecture`
[TestMethod]
public void TestMemory()
{
    var x = new List<int>();

    try
    {
        for (long y = 0; y < long.MaxValue; y++)
        x.Add(0);
    }
    catch (Exception)
    {
        System.Diagnostics.Debug.WriteLine("Actual capacity (int): " + x.Count);
        System.Diagnostics.Debug.WriteLine("Size of objects: " + System.Runtime.InteropServices.Marshal.SizeOf(x.First().GetType())); //// This gives us "4"
    }
}
Run Code Online (Sandbox Code Playgroud)

对于x64:268435456(预期)

对于x86:67108864(比预期少2倍)

为什么人们说包含134217728的List int …

.net c#

6
推荐指数
1
解决办法
749
查看次数

Visual Studio 2015错误?为XAML文本编辑器插入空格而不是制表符

我有我的工具 - >选项 - >文本编辑器 - > XAML - >选项卡设置为"保持选项卡"而不是空格.但是,当我使用快捷方式自动缩进代码时Ctrl-E-D,它会在我的XAML代码中的任何位置插入空格.

我在VS 2013中没有这个问题.

XAML

我已经尝试为所有语言设置XML,HTML标签,它仍然在我的XAML文件中插入空格.

所有

这是一个错误还是XAML的文本编辑器设置位于其他地方?

c# wpf xaml visual-studio-2015

6
推荐指数
1
解决办法
3073
查看次数

Git LFS在TeamCity代理上不起作用

git-lfs在我的私有存储库上进行了设置,并且从命令行可以正常运行。

我将TeamCity构建代理设置为已git-lfs安装并初始化。但是,当我尝试通过TeamCity构建运行它时,该git-lfs pull命令将永远挂起,并且根本不会传输任何数据。我的任务管理器显示git-lfs.exe存在,但处于空闲状态。从代理的工作文件夹(在代理计算机上)进行手动测试时,git-lfs pullgit lfs pull成功下载所有大文件。

我的构建配置的git-lfs pull第一步是,并且在更新源代码后立即执行。

有谁知道为什么git-lfs pull通过TeamCity构建过程运行git-lfs pull与在构建代理内部的命令行上运行有何不同?

我正在使用TeamCity 10.0.2(42234),并且我的代理已更新。

git teamcity git-lfs

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

MEF 组合错误未传播内部异常(通过消息除外)

我正在与 MEF 合作将来自不同来源的模块加载到我的应用程序中。我有一个示例(下面的代码),其中我创建了一个可组合的类,该类在构造函数中引发异常。该异常导致组合失败并因此抛出一个异常,说明“为什么”......在语句中它说原因是InvalidCastException......这是真的。

如果我打印异常,我知道它为什么失败,但是我如何检索InvalidCastException抛出的 ACTUAL 原始异常 ( ),以便我正确处理它——而不仅仅是一个通用的捕获,它会错过其他异常——在要求所述类的实例的模块?查询CompositionException.Errors也不会给我原始的异常...

代码:

using System.ComponentModel.Composition;
using Microsoft.Practices.ServiceLocation;

[Export(typeof(A))]
Class A
{
    [ImportingConstructor]
    public A(ISomeinterface x, ISomeOtherInterface y)
    {
        //// Throw some exception (in my code it happens to be an InvalidCastException)
        throw new InvalidCastException ("Unable to cast object of type 'Sometype' to type 'Someothertype'.");  
    }
}

Class B
{
    public B(IServiceLocator serviceLocator)
    {
        try
        {
            //// Here is where the exception would be thrown as an "ActivationException"
            A …
Run Code Online (Sandbox Code Playgroud)

.net c# mef service-locator

2
推荐指数
1
解决办法
3827
查看次数

iOS 12.1.2 branch.io Universal Links打开应用程序,但没有数据

我正在尝试通过branch.io为iOS应用(Swift 4.2)实现深层链接。我已经完全按照分支文档中的概述集成了iOS SDK。为了测试集成,我运行了branch.io通用链接验证脚本,并成功通过了该脚本。

通用链接不起作用的方法: 单击“注释”或“消息”中的深层链接会打开应用程序,但不会传递任何数据。在查看调试日志时,Branch报告的网址为完全空白(example.app.link?%24identity_id=611647344982868361)而不是(example.app.link/hj86HlvvMk2?%24identity_id=611647344982868361)。这与不使用深层链接手动打开应用程序相同。通过延迟的深层链接功能也无法获得任何数据。

使用URI方案而不是通用链接: 如果我通过branch.io链接设置仪表板关闭了通用链接,则所有URL在浏览器中打开,而没有任何提示打开应用程序。但是,当我手动打开应用程序时,深度链接数据在启动时就可用(通过延迟链接功能)。

其他尝试:添加$uri_redirect_mode: 2到链接数据以强制应用打开并没有真正改变任何东西。唯一不同的是,对于URI方案,它在重定向到之前在Safari中显示错误$fallback_url。我还尝试过重新安装应用程序,清除Safari缓存和cookie,但未成功。

我还要提到,深层链接本身应该没有任何问题。在Android上,相同的深层链接可以完美运行。

两种方法都无法使用立即可用的Deeplink数据打开应用程序。还有其他选择可以使这项工作吗?

更新:URI和通用链接是单独的问题。我们通过仔细检查URI方案来使URI正常工作(这是不正确的)。对于通用链接,Swift 4.2的Branch文档中可能会存在一些错误。请参阅我的答案以寻求解决方案。

更新2019-02-05:分支文档已更新为Swift 4.2。一切都很好。

deep-linking ios branch.io ios-universal-links swift4.2

2
推荐指数
1
解决办法
1174
查看次数