对于新的 .net core 应用程序,我应该在 protobuf-net 和 google.protobuf 之间使用什么 NuGet 包?
c# performance serialization protobuf-net binary-serialization
我有
public bool Included { get; set; }
Run Code Online (Sandbox Code Playgroud)
我想改为:
public bool IsIncluded { get; set; }
Run Code Online (Sandbox Code Playgroud)
我想要向后兼容.我想只在代码中定义IsIncluded,但是能够读取属性为"Included"的旧xml.
XmlSerializer是否支持它以及如何支持它?
注意:我尝试没有成功...(不反序列化)
public bool IsIncluded { get; set; }
[Obsolete]
public bool Included
{
set { IsIncluded = value; }
get { return IsIncluded; }
}
Run Code Online (Sandbox Code Playgroud)
更新我只是想添加我更喜欢我的解决方案,因为我希望我的xml变成IsIncluded,对我而言,更合适.像我一样(下面的解决方案),将使我能够更改xml,但保持以前的版本正常工作.从长远来看,我可能会删除代码以支持旧版本.
更新2018-02-01请在下面的解决方案和建议的解决方案中查看Greg Petersen的评论.他提出了一个很好的解决方案,以便将校正封装在应该完成的地方(类).哇!!!
我目前正在使用 EPPlus 将数据导出到 excel。它适用于少量数据。但是要导出大量数据会消耗大量内存。
我简要介绍了 OOXML 和/或 Microsoft Open XML SDK 2.5。我不确定我可以用它来将数据导出到 Excel 吗?
还有第三方提供程序库。
我想知道什么解决方案可以正确地以良好的性能导出大量数据并且不占用太多空间(理想情况下少于要导出的数据量的 3 倍)?
更新:一些额外的要求......我需要能够导出“颜色”信息(不包括 CSV),我想要一些易于管理的东西,比如 EPPlus 库(不包括 XML 格式本身)。我找到了另一个线程,他们推荐了我正在尝试的 Aspose 或 SpreadsheetGear。我把第一个答案作为确定。谢谢大家。
更新 2016-02-16就像信息一样...我们现在使用 SpreadSheetGear,我们很喜欢它。我们曾经需要支持,这很棒。
谢谢
我收到以下异常: InvalidOperationException :调用线程无法访问此对象,因为其他线程拥有它。
当我尝试设置一个窗口的所有者时,该窗口的所有者建立在另一个线程上而不是所有者。
我知道我只能从正确的线程更新 UI 对象,但是如果它来自另一个线程,为什么我不能只设置所有者?我可以换一种方式吗?我想让进度窗口成为唯一可以输入条目的窗口。
这是发生错误的代码部分:
public partial class DlgProgress : Window
{
// ******************************************************************
private readonly DlgProgressModel _dlgProgressModel;
// ******************************************************************
public static DlgProgress CreateProgressBar(Window owner, DlgProgressModel dlgProgressModel)
{
DlgProgress dlgProgressWithProgressStatus = null;
var listDlgProgressWithProgressStatus = new List<DlgProgress>();
var manualResetEvent = new ManualResetEvent(false);
var workerThread = new ThreadEx(() => StartDlgProgress(owner, dlgProgressModel, manualResetEvent, listDlgProgressWithProgressStatus));
workerThread.Thread.SetApartmentState(ApartmentState.STA);
workerThread.Start();
manualResetEvent.WaitOne(10000);
if (listDlgProgressWithProgressStatus.Count > 0)
{
dlgProgressWithProgressStatus = listDlgProgressWithProgressStatus[0];
}
return dlgProgressWithProgressStatus;
}
// ******************************************************************
private static void StartDlgProgress(Window owner, DlgProgressModel progressModel, ManualResetEvent …Run Code Online (Sandbox Code Playgroud) 我在WPF项目中使用AvalonDock和MVVM.
当我点击"X"(选项卡的关闭按钮)时,我的文档关闭但保留在内存中.它似乎只是隐藏的.它不会从我的Model.Documents收藏中删除.
如果我添加DockingManager_DocumentClosing并尝试从集合中删除我的文档,我会在以下方法中收到异常,Xceed.Wpf.AvalonDock.Layout.LayoutContent因为它parentAsContainer是null.
/// <summary>
/// Close the content
/// </summary>
/// <remarks>Please note that usually the anchorable is only hidden (not closed). By default when user click the X button it only hides the content.</remarks>
public void Close()
{
var root = Root;
var parentAsContainer = Parent as ILayoutContainer;
parentAsContainer.RemoveChild(this);
if (root != null)
root.CollectGarbage();
OnClosed();
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何管理AvalonDock中可以从我的文件中移除的文件,Model.Documents以便在我按下Close按钮时最终被处理掉?
供参考:这是我的AvalonDock的XAML:
<avalonDock:DockingManager
x:Name="DockingManager"
DocumentsSource="{Binding DocumentItems}"
ActiveContent="{Binding ActiveMainWindowViewModel,
Converter={StaticResource RestrictedClassConverter}, …Run Code Online (Sandbox Code Playgroud) 编译时出现错误:
“SimulatorUi.MainWindow”不包含“UserCtrlSimulator”的定义,并且找不到接受“SimulatorUi.MainWindow”类型的第一个参数的扩展方法“UserCtrlSimulator”(您是否缺少 using 指令或程序集引用?)
在同一项目中编译用户控件及其所属窗口时出现此错误。
为什么 ?
我有:
<DataTemplate DataType="{x:Type svgEdit:UserControlSvgEditModel}">
<svgEdit:UserControlSvgEdit />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
我想以编程方式获取类型:svgEdit:UserControlSvgEdit
我做:
// Here the obj Type is the key to the resource, it works but
var key = new System.Windows.DataTemplateKey(obj.GetType());
var dataTemplate = (DataTemplate)DockSite.FindResource(key);
// I don't know how to get the DataTemplate associated type ????
var tc = dataTemplate.Template as TemplateContent;
Run Code Online (Sandbox Code Playgroud)
但我找不到如何检索相关类型?
注意:我需要以编程方式实例化模板内容并将其传递给DockSite(Docking Manager)
在我的函数 GetAssemblyResourceStream(下面的代码)中,我使用“assembly.GetManifestResourceStream”和“resourceReader.GetResourceData”从 Dll 读取资源。
当我从资源的字节数组设置内存流时,我必须包含 4 个字节的偏移量:
const int OFFSET = 4;
resStream = new MemoryStream(data, OFFSET, data.Length - OFFSET);
Run Code Online (Sandbox Code Playgroud)
那个偏移的原因是什么?它来自哪里?
参考:MSDN ResourceReader 类末尾的示例
另外:我制作了一个测试应用程序来更好地理解资源。该应用程序显示了我在偏移量方面的问题。我的小测试应用程序可在Github (VS 2015)
更新 2015-10-05 10h28由于答案非常低,我怀疑存在错误和/或未记录的行为。我在Connect.Microsoft.com 上报告了一个错误,并将看到结果。
2015-10-07 更新我删除了错误。我仍然认为它没有得到很好的记录和/或可以被视为一个错误,但我非常怀疑他们会在不做任何事情的情况下关闭我的请求。我希望没有人会遇到和我一样的问题。
代码:
// ******************************************************************
/// <summary>
/// The path separator is '/'. The path should not start with '/'.
/// </summary>
/// <param name="asm"></param>
/// <param name="path"></param>
/// <returns></returns>
public static Stream GetAssemblyResourceStream(Assembly asm, string path)
{
// Just to be …Run Code Online (Sandbox Code Playgroud) 我通过Visual Studio 2015在Windows 7 Entreprise English上安装了VS2015及更新1.设置结果是一些错误.我重新启动了我的机器并再次运行安装程序.设置成功完成.
注意:我在第一次安装时安装了Resharper,然后在第二次重试设置之前删除了(成功).
重新安装后,我收到了许多消息框,其中"包没有正确加载".
现在,我的Visual Studio 2015更新1完全是颠倒的??? 我在启动时收到错误消息(包没有正确加载):
加载项目时更多(包没有正确加载):
关于我们如何解决这个问题的任何想法?
更新:我现在正在尝试卸载,然后使用带有Update 1的Visual Studio 2015再次重新安装...
我通过完全卸载Visual Studio 2015并使用Update 1重新安装VS2015来解决我的问题.
VS2019最新更新...版本:16.2.5
主要错误:TF402484 人员团队项目已被删除
另外: TF10175 人员团队项目不存在。
据我所知,到目前为止,TFS 的新名称似乎是“Azure DevOps”。有些错误说 TFS,而另一些错误说“Azure DevOps”,但听起来是一样的。
它在许多项目中出现了许多错误(至少有 4 个不同的解决方案):
有 3 到 4 种不同的对话框错误,具体取决于我在何处执行与 TFS 相关的操作。所有错误均与 TF402484 错误有关。该错误与无人删除的已删除项目有关。大多数时候或总是,项目从来都不是解决方案的一部分。
我除了将 VS2019 更新到最新版本之外没有做任何其他事情。
我红色:Visual studio 2013团队项目已被删除
关于上一个链接的建议:“撤消任何挂起的更改”,是的,它似乎可以暂时修复该错误,但是发生了一些事情让我陷入这种情况,这似乎经常发生,间歇性地发生,这非常烦人。
事实上,为什么我当前解决方案的“待处理更改”窗口中出现了来自其他项目(不在我当前解决方案中)的许多项目?
启动源代码管理资源管理器给我很多 TF402484 DlgBox 错误(至少 4 个),它显示“正在工作...”并永远保持这种状态。IT 就冻结了。
另外,我正在使用同时打开的许多 VS2019 实例。它会导致错误吗?
出了什么问题???为了防止这种在不久的将来会杀死我的行为,我必须打开/关闭或设置什么?
另外,也许没有连接,但我的计算机上唯一发生变化的其他事情是:我正在使用 Cobian Backup 进行备份,也许它会触及(更改文件时间)所有或某些解决方案文件。
c# ×10
wpf ×4
performance ×2
resources ×2
azure-devops ×1
compilation ×1
datatemplate ×1
dispatcher ×1
dispose ×1
docking ×1
excel ×1
export ×1
installation ×1
memory ×1
mvvm ×1
offset ×1
properties ×1
protobuf-net ×1
stream ×1
tfs ×1
updates ×1
version ×1