小编Pie*_*aud的帖子

从\\ localhost\xyz启动时,.NET可执行文件不会加载引用的程序集

我的.NET可执行文件abc.exe引用了几个程 其中一个被称为xyz.core.exe.当从通过共享名称指定的网络位置启动它时,我无法使其工作\\localhost\xyz\abc.exe.如果我挂载名为Z:on 的网络驱动器号\\localhost\xyz并且如果我启动,这可以正常工作Z:\abc.exe.

尝试xyz.core.exe从共享加载程序集时,.NET似乎变得混乱.它会引发System.IO.FileNotFoundException以下融合日志信息的异常:

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable  \\localhost\xyz\abc.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = Workstation\arnaud
LOG: DisplayName = xyz.core, Version=2.5.2.1001, Culture=neutral, PublicKeyToken=...
(Fully-specified)
LOG: Appbase = file://localhost/xyz/
LOG: Initial PrivatePath = NULL
Calling assembly : abc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=...
===
LOG: This bind starts in default load context.
LOG: No application …
Run Code Online (Sandbox Code Playgroud)

c# networking load fusion assembly-resolution

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

如何在窗口上设置HICON(多种尺寸的.ICO)?

我想定义 Win32 窗口的应用程序图标,例如通过调用SetClassLongwithGCL_HICON并将句柄传递给图标(请参阅MSDN 上的SetClassLong 函数)。

这很好用,但我还没有弄清楚应该如何加载图标(从 ICO 文件)以保留所有可用尺寸(例如 16x16、32x32、48x48 和全尺寸 PNG 图标)。当我将图标文件加载LoadImage到内存中以获取时HICON,我必须指定我想要的大小(请参阅我对相关问题的回复)。

我的 ICO 文件包含一个小尺寸图像,应用作窗口图标(标题栏的左上角),并且设计得非常清晰,但也包含应显示在 Alt-Tab 对话框中的较大变体,但是...

  1. 加载 16x16 图标会在标题栏中显示正确的图标,但是,当然,当我按 Alt-Tab 时,它会出现丑陋的拉伸版本。而且任务栏中显示的也不是很漂亮。

  2. 当我按 Alt-Tab 时,加载 48x48 图标会显示一个漂亮的图标,但标题栏中显示的图标很模糊,因为它是 48x48 图标的缩小版本。

有什么方法可以告诉 Windows 我的 Windows 有一个多尺寸图标吗?是否有一些我错过的明显的 API?

windows winapi icons

6
推荐指数
2
解决办法
6610
查看次数

自定义代码段在第一次"使用"语句之前未显示

CR在Visual Studio 2013中在C#源文件的顶部键入时,此自定义代码段将显示:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>Insert a Copyright notice</Title>
            <Shortcut>CR</Shortcut>
            <Description>Code snippet for the Copyright notice comment</Description>
            <Author>Pierre Arnaud</Author>
            <SnippetTypes>
              <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Code Language="csharp">
                <![CDATA[//  Copyright © 2015, EPSITEC SA, CH-1400 Yverdon-les-Bains, Switzerland$end$]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>
Run Code Online (Sandbox Code Playgroud)

在Visual Studio 2015中,CR如果我将光标放在第一个using语句之前,则代码段不会显示在建议中.显示的唯一建议是提供的两个Visual Studio externusing片段.

知道我是否必须更新此代码段的XML才能再次使用?

编辑:我在Microsoft Connect上打开了一个问题.

code-snippets visual-studio-2015

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

SmtpClient(.NET)不对符合RFC 2047的邮件头进行编码

我正在使用.NET SmtpClient发送电子邮件,其中主题可能包含ASCII范围之外的字符.在RFC 2047定义了如何当它含有特殊字符的电子邮件正文应进行编码.以下是电子邮件标题中主题的示例:

Subject: Votre enregistrement numéro 123

在编码为ISO-8859-1之后,这应该成为:

Subject: =?iso-8859-1?Q?Votre=20enregistrement=20num=E9ro=20123?=

所有特殊字符,包括?,=(和其他人)和白色空间,使用编码的=xx转义序列.

但是,当我查看SmtpClient产生的内容时,我发现它不会逃避空白区域,这意味着邮件客户端会收到此标头:

Subject: =?iso-8859-1?Q?Votre enregistrement num=E9ro 123?=

这意味着编码在(我的阅读)RFC 2047中被打破.一些电子邮件客户端对这种不正确的编码(其中大多数,实际上包括Outlook和gmail)非常满意,但是一个(wanadoo.fr)以原始格式显示标题.这不是用户应该看到的:-(

这个问题有没有已知的解决方法?

注意: .NET 4.0实现SmtpClient按预期编码主题,产生此输出,这是正确的:

Subject: =?Windows-1252?Q?Votre_enregistrement_num=E9ro_123?=

.net encoding smtpclient

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

名称以"No.xxx"结尾时,Visual Studio 2010中缺少嵌入式资源

我在Visual Studio 2010中遇到过一种奇怪的行为.

使用嵌入式资源(添加到我的C#项目并且Build Action属性设置为Embedded Resource的文件)时,这些文件作为二进制数据包含在输出程序集中.列出资源非常简单:

class Program
{
    static void Main(string[] args)
    {
        string[] names = typeof (Program).Assembly.GetManifestResourceNames ();

        foreach (var name in names)
        {
            System.Console.Out.WriteLine (name);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果嵌入的资源文件名以No.xxx(扩展名无关)结束,则该文件不会显示在列表中.我无法弄清楚为什么Visual Studio 2010不会包含这样的文件.我错过了什么?

注意:如果我将解决方案资源管理器中的嵌入式资源文件重命名为其他内容,那么一切都按预期工作.

visual-studio-2010 embedded-resource

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

WPF BitmapImage和带CMYK + Alpha的TIFF

我正在使用此代码段来加载各种图像文件:

BitmapImage bitmap = new BitmapImage ();
bitmap.BeginInit ();
bitmap.UriSource = new System.Uri (path);
bitmap.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
bitmap.EndInit ();
Run Code Online (Sandbox Code Playgroud)

这适用于存储为RGB,RGB + Alpha和CMYK的TIFF文件.但是,如果我尝试使用CMYK颜色和Alpha通道加载TIFF文件,则会出现异常(解码器无法识别文件格式有效).

我之前使用过FreeImage库和一个很薄的C#包装器.FreeImage 3.x对这种图像格式有部分支持,即我必须加载TIFF两次,一次是CMYK,没有透明度,一次是RGB + Alpha; 因为FreeImage只能访问最多4个同时颜色通道,所以需要这个技巧.

我想知道是否有一种加载CMYK + Alpha位图的支持方式?直接在C#中或通过一些互操作代码,但最好不必使用第三方DLL(除了.NET 4框架库).

可在此处找到此类TIFF文件的示例.

编辑:我不能再重现问题,以下代码工作得很好:

BitmapImage bitmap = new BitmapImage ();
bitmap.BeginInit ();
bitmap.UriSource = new System.Uri (path);
bitmap.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
bitmap.EndInit ();
byte[] pixels = new byte[bitmap.PixelHeight*bitmap.PixelWidth*5];
bitmap.CopyPixels (pixels, bitmap.PixelWidth * 5, 0);
Run Code Online (Sandbox Code Playgroud)

但我仍然陷入困境:如何才能发现源图像被编码为CMYK加Alpha通道?查看Format属性时,我只获得图像每像素40位的信息.所有有趣的东西都存储在以下非公共属性中:

bitmap.Format.FormatFlags == IsCMYK | NChannelAlpha;
bitmap.Format.HasAlpha == true;
Run Code Online (Sandbox Code Playgroud)

有没有任何正式的方式来接触他们,而不诉诸反思?

wpf alpha tiff cmyk bitmapimage

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

如何将特殊字符(0x80..0x9F)写入Windows控制台?

我想要这个代码:

System.Console.Out.WriteLine ("œil");
Run Code Online (Sandbox Code Playgroud)

显示œil而不是oil在我的测试程序中.

Console.OutputEncoding默认情况下设置为Western European (DOS)(CodePage设置为850,并WindowsCodePage在我的系统设置为1252).字符集包含特殊的OE和oe diphtongs(可以在Windows-1252上的维基百科文章中看到),但不知何故,我怀疑ISO-8859-1集中找不到的字符被丢弃/替换.

字符,如â,ç等得到正确显示在控制台上,但在扩展0x80的任何字符... 0x9F范围内都没有.

如何在控制台上正确显示它们?

c# console character-encoding windows-console

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

如何以编程方式在Windows 7中的StartMenu上固定应用程序

我正在进行重大升级,因此,如果用户在升级之前将应用程序固定在StartMenu上,则用户将在升级后丢失它.

因此,我在安装程序中创建了一个自定义操作,以编程方式在"开始"菜单文件夹中创建应用程序的快捷方式.但是,这种变化似乎没有反映在实际的StartMenu上.有谁知道问题是什么?这只是单向通知(即从StartMenu到文件夹,但反之亦然?)

非常感谢.

c windows windows-installer windows-7

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

根据行ID查找排序中的行号,然后查找其邻居

说我有一些SELECT陈述:

SELECT id, name FROM people
   ORDER BY name ASC;
Run Code Online (Sandbox Code Playgroud)

我在people表中有几百万行,该ORDER BY子句可能比我在这里显示的要复杂得多(可能在十几列上运行).

我只检索行的一小部分(比如行1..11),以便在UI中显示它们.现在,我想解决以下问题:

  1. 找到给定的行数id.
  2. 显示之前的5个项目和连续的5个项目id.

一旦我解决了问题1,问题2很容易解决,因为如果我知道我要查找的项目1000在排序结果集中有行号(这是Firebird SQL方言),我就可以使用这样的东西:

SELECT id, name FROM people
   ORDER BY name ASC
   ROWS 995 TO 1005;
Run Code Online (Sandbox Code Playgroud)

我也知道,我能找到的等级通过计算所有一个我找前落入排了一排,但是这可能会导致很长的WHERE从句用吨ORAND在状态.我必须反复这样做.使用我的测试数据,即使使用正确索引的列,这也需要数百毫秒,这太慢了.

是否有一些方法可以通过使用一些SQL:2003功能(如row_numberFirebird 3.0支持)来实现这一目的?我绝不是一个SQL大师,我需要一些指针.我可以创建一个缓存视图,其结果将包括排名/密集排名/行索引?

sql firebird sql-order-by rowcount rank

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

MFC程序挂起:在Vista上更新KB3059317后损坏的Comctl32.dll?

我有一个基于MFC的程序,在应用更新3059317之前工作正常:

MS15-060:Microsoft公共控件中的漏洞可能允许远程执行代码:2015年6月9日)

此更新将替换Comctl32.dll为新版本.

应用此更新后,打开对话框只会挂起程序.并非所有对话框都会受到影响,但打印预览始终处于挂起状态,但不会导致程序崩溃.它变得没有反应.

我不知道如何尝试调试此问题以找到解决方法.程序挂起时创建内存转储会产生以下堆栈跟踪:

comctl32.dll!751f8505() 
Xxx.exe!CWnd::WindowProc(unsigned int message, unsigned int wParam, long lParam) Line 2095 + 0x13 bytes
Xxx.exe!AfxCallWndProc(CWnd * pWnd, HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 285
Xxxx.exe!AfxWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 434 + 0x10 bytes
user32.dll!76aafd72() 
user32.dll!76aa84de() 
user32.dll!76aafd72() 
user32.dll!76aa9f8d() 
ntdll.dll!77dd5a7e() 
user32.dll!76aaa2af() 
comctl32.dll!75249cfb() 
comctl32.dll!751fb559() 
user32.dll!76aafd72() 
user32.dll!76aafe4a() 
user32.dll!76ab09d3() 
user32.dll!76abb759() 
Xxx.exe!CWnd::DefWindowProcA(unsigned int nMsg, unsigned int wParam, long lParam) Line 1116 + 0x7 bytes …
Run Code Online (Sandbox Code Playgroud)

c++ windows mfc comctl32

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