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 就会像这样显示它。
有人有解决方案吗?
非常欢迎任何帮助。
干杯,爵士乐
我正在将 C# 与.Net v4.7.2和Win10一起使用,并且我有一些长路径 ( >260 ) 的文件要复制。
我知道,有一个解决方案可以在路径前加上 \\?\
此前缀有效,但我不想每次都为任何文件操作添加前缀。从 .Net v4.6.2 开始,AppContext-Switches UseLegacyPathHandling和BlockLongPaths 提供了更好的解决方案。
然而,这是行不通的。
我的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 …