天道酬勤,学无止境

.net

System.TypeLoadException: Could not load type 'Npgsql.NpgsqlConnection'

问题 我有一个项目,我正在尝试用 mono 编译以在 ubuntu 上运行。 在 Windows 上运行良好,使用xbuild编译单声道工作正常,但是当我尝试从服务器运行它时,出现以下错误: System.TypeLoadException: Could not load type 'Npgsql.NpgsqlConnection' from assembly 'Npgsql, Version=3.2.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7'. 在 NpgsqlConnection _connection = new NpgsqlConnection(); Npgsql 版本 3.2.1.0 存在,所以我不确定为什么会出现这个错误。 我执行以下步骤 Mono x86 cmd > xbuild /p:Configuration=Release D:\Dropbox\MonoServer\MonoServer.csproj 将所有文件传输到服务器 mono MonoServer.exe 我还必须手动将System.Data传输到服务器,因为由于某种原因不包括在内,并且会导致: System.IO.FileNotFoundException: Could not load file or assembly or one

2022-07-11 09:58:05    分类:技术分享    c#   .net   mono

How to remove DateTime.Parse dependency on System.Threading.Thread.CurrentThread.CurrentCulture

问题 考虑以下代码: class Program { static void Main(string[] args) { try { System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("fo-FO"); var s = DateTime.MaxValue.ToString("yyyy-MM-ddTHH:mm:ssZ"); var d = DateTime.Parse(s, CultureInfo.InvariantCulture); Console.WriteLine("Was able to parse with fo-FO"); } catch (Exception e) { Console.WriteLine("Exception: {0}", e); } try { System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); var s = DateTime.MaxValue.ToString("yyyy-MM-ddTHH:mm:ssZ"); var d = DateTime.Parse(s, CultureInfo.InvariantCulture); Console

2022-07-11 09:46:11    分类:技术分享    c#   .net   datetime

String greater, less, and equal comparison in XmlDocument

问题 我正在尝试在 XmlDocument 中进行字符串比较,以下是我尝试过的。 我想知道为什么前 2 个会产生正确的结果,而后 2 个不会返回任何结果。 我试图做的是根据日期时间字符串过滤掉节点。 就像我的最后一个例子一样。 谢谢, XmlNodeList test = x2PathDoc.SelectNodes("//config /pendingversion [@versionconfigid > 1002002]"); XmlNodeList test2 = x2PathDoc.SelectNodes("//config /pendingversion [@versionconfigid >'1002002']"); XmlNodeList test3 = x2PathDoc.SelectNodes("//config /pendingversion[@test > 'b']"); XmlNodeList test4 = x2PathDoc.SelectNodes("//config /pendingversion [@deploydatetime > '2010-12-19T03:25:00-08:00']"); 回答1 在 XPath 1.0 中,除相等比较之外的比较运算符仅适用于数字。 这是因为在 XML 中您正在处理 UNICODE。 因此

2022-05-17 05:18:35    分类:技术分享    c#   .net   xpath   xmldocument

IoC/DI Container that supports Compact Framework

问题 回答1 回答2 回答3 Ninject 是一个依赖注入框架,具有紧凑的框架版本。 但是,在受限环境中,我会避​​免使用框架,而是在我的代码中实现控制原则的反转。 回答4

2022-05-17 04:52:14    分类:技术分享    .net   compact-framework   dependency-injection   inversion-of-control

UI Truncation on Localized Win7 Versions

问题 我有一个分别用 C# .NET 3 和 Wise Installer 开发的 2 UI。 UI 是向导页面。 这在 Win 7 English OS 上运行良好。 但是当我在Win7韩文或中文上部署应用程序时。 我看到了截断。 即使我将字体硬编码为任何本地化操作系统的默认字体,我也看到了这个问题。 我尝试过的其他事情是 - 更改 Windows 主题,更改分辨率。 但问题仍然存在。 我想了解这种变化的原因是什么? 有没有关于这种行为的官方文件? 有什么办法可以解决这个问题? 回答1 当 OS DPI 设置更改时,很难获得像向导一样的“固定大小”表单来表现自己,我想您可能会在不同语言版本的 Windows 上遇到类似的问题。 (最大的困难是必须不断重启你的电脑来测试它,而且表单设计器会受到当前操作系统/字体/DPI 设置的影响,所以你不能在测试环境中编辑表单,因为那样它就不会当你回到你的编码环境时工作!) 默认情况下,表单会根据目标计算机上的字体和 DPI 设置进行缩放。 在 Form 属性中,查找 AutoScaleMode 选项,并尝试将其设置为“DPI”或“None”而不是“Font”。 另一个可能有帮助的选项是 MinimumSize 属性,它可以帮助您阻止窗口变得太小,同时仍然允许它在“大字体”模式下增长。

2022-05-17 04:49:03    分类:技术分享    c#   .net   interface   internationalization

strange behaviour on another process via Process.Start(startInfo)

问题 我们的 C# (V3.5) 应用程序需要调用来自另一家公司的另一个 C++ 可执行文件。 我们需要向它传递一个原始数据文件名,它会处理该原始数据(大约 7MB)文件并生成 16 个结果文件(每个大约 124K)。 调用该可执行文件的代码如下: ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = true; startInfo.UseShellExecute = false; startInfo.RedirectStandardError = true; startInfo.RedirectStandardOutput = true; startInfo.WindowStyle = ProcessWindowStyle.Hidden; startInfo.FileName = exePath; startInfo.Arguments = rawDataFileName; try { Process correctionProcess = Process.Start(startInfo); correctionProcess.WaitForExit(); } catch(nvalidOperationException ex) { .... } catch(...)

2022-05-17 03:59:04    分类:技术分享    c#   .net

How to read huge CSV file with 29 million rows of data using .net

问题 我有一个巨大的.csv文件,具体来说是一个有 2900 万行的.TAB文件,文件大小约为 600 MB。 我需要将其读入IEnumerable集合。 我尝试过CsvHelper 、 GenericParser和其他一些解决方案,但总是以 Out of Memory 异常结束 请提出一种方法来做到这一点 我试过了 var deliveryPoints = new List<Point>(); using (TextReader csvreader1 = File.OpenText(@"C:\testfile\Prod\PCDP1705.TAB")) //StreamReader csvreader1 = new StreamReader(@"C:\testfile\Prod\PCDP1705.TAB")) using (var csvR1 = new CsvReader(csvreader1, csvconfig)) { csvR1.Configuration.RegisterClassMap<DeliveryMap>(); deliveryPoints = csvR1.GetRecords<Point>().ToList(); } using (GenericParser parser = new GenericParser()) { parser.SetDataSource

2022-05-17 03:01:44    分类:技术分享    c#   .net   csv   streamreader

What is the accepted way to get a main window with menubar and toolbar in WPF?

问题 回答1 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="self" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Menu Grid.Row="0"> <MenuItem Header="File"> <MenuItem Header="Open" /> <MenuItem Header="Close" /> </MenuItem> </Menu> <ToolBar Grid.Row="1"> <Button Content="Foo" /> <Button Content="Bar" /> </ToolBar> </Grid> </Window>

2022-05-17 02:52:24    分类:技术分享    .net   wpf

How to combine asynchrony with locking?

问题 正如 Stephen Cleary 的著名博客文章所指出的那样,永远不要尝试同步运行异步代码(例如通过Task.RunSynchronously()或访问Task.Result )。 另一方面,您不能在lock语句中使用 async/await。 我的用例是 ASP.NET Core 应用程序,它使用IMemoryCache来缓存一些数据。 现在当数据不可用时(例如缓存被删除)我必须重新填充它,并且应该用lock保护它。 public TItem Get<TItem>(object key, Func<TItem> factory) { if (!_memoryCache.TryGetValue(key, out TItem value)) { lock (_locker) { if (!_memoryCache.TryGetValue(key, out value)) { value = factory(); Set(key, value); } } } return value; } 在这个例子中,工厂函数不能是异步的! 如果它必须是异步的,应该怎么做? 回答1 协调对共享变量的异步访问的一种简单方法是使用 SemaphoreSlim。 您调用WaitAsync开始异步锁定,并调用Release结束它。 例如 private static readonly

2022-05-17 02:50:45    分类:技术分享    c#   asp.net   .net   asynchronous

Get value from DataContext to MarkupExtension in Style Setter

问题 我有一个WPF MarkupExtension ,用于修改ListBoxItem属性,例如背景。 此 Background 新值基于ListBoxItem.DataContext和 MarkupExtension 属性,例如 Color。 <ListBox ItemsSource="{Binding ColorfullItems}"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="Background" Value="{Helpers:MyMarkupExtension Color=Blue}" /> </Style> </ListBox.ItemContainerStyle> </ListBox> 我的 MarkupExtension 是: public class MyMarkupExtension : MarkupExtension { public string Color { get; set; } public override object ProvideValue(IServiceProvider serviceProvider) { IProvideValueTarget provideValueTarget =

2022-05-17 02:29:07    分类:技术分享    c#   .net   wpf   xaml   markup-extensions