小编jaz*_*jaz的帖子

FlowDocument (XPS) 与 Windows 更新 KB5020880 (CVE-2022-41089)

2022 年 12 月 13 日,微软为 .NET 4.8.1 发布了 Windows 更新 KB5020880 (CVE-2022-41089),应该可以修复 XPS 上的安全问题。

从那时起,将渲染到 XPS 的 FlowDocument 将不再显示本地图像。我确实需要本地图像,因为我必须动态创建和嵌入它们。

<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              PageHeight="29.7cm" 
              PageWidth="21cm" >
    <Section Padding="40,0,20,0">
      <Paragraph>before image</Paragraph>
  
      <Paragraph FontSize="10" FontFamily="Verdana">
        <Image Source="c:/Test/MyImage.jpg" Margin="40,40,0,0" />
      </Paragraph>
  
      <Paragraph>after image</Paragraph>
    </Section>
</FlowDocument>
Run Code Online (Sandbox Code Playgroud)

一旦 FlowDocument 转换为 XpsDocument,DocumentViewer 就会像这样显示它。

在此输入图像描述

有人有解决方案吗?

非常欢迎任何帮助。

干杯,爵士乐

.net windows-update xps flowdocument

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

C#:长路径与 UseLegacyPathHandling 和 BlockLongPaths 不起作用

我正在将 C# 与.Net v4.7.2Win10一起使用,并且我有一些长路径 ( >260 ) 的文件要复制。

我知道,有一个解决方案可以在路径前加上 \\?\

此前缀有效,但我不想每次都为任何文件操作添加前缀。从 .Net v4.6.2 开始,AppContext-Switches UseLegacyPathHandlingBlockLongPaths 提供了更好的解决方案。

然而,这是行不通的。

我的app.config看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
  </startup>
  <windowsSettings>
    <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
  </windowsSettings>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
  </runtime> 
</configuration>
Run Code Online (Sandbox Code Playgroud)

我的C# 代码如下所示:

public static void Main(string[] args)
{
   string src = @"c:\Temp\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.txt";
   string dst = @"c:\Temp\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-123.txt";
   File.Copy(src, dst);
}
Run Code Online (Sandbox Code Playgroud)

我的问题

  • 使用 .Net v4.5 File.Copy() 抛出System.IO.PathTooLongException

  • 使用 .Net v4.7.2 File.Copy() 抛出System.IO.DirectoryNotFoundException …

c# pathtoolongexception

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