小编Bra*_*ner的帖子

在NPOI workbook.write之后,MemoryStream似乎已关闭?

我正在使用NPOI将DataTable转换为ASP.NET Web API项目中的Excel.

但我从回应中得不到任何东西.这是我的代码:

public HttpResponseMessage GetExcelFromDataTable(DataTable dt)
{
    IWorkbook workbook = new XSSFWorkbook(); // create *.xlsx file, use HSSFWorkbook() for creating *.xls file.
    ISheet sheet1 = workbook.CreateSheet();
    IRow row1 = sheet1.CreateRow(0);
    for (int i = 0; dt.Columns.Count > i; i++)
    {
        row1.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
    }

    for (int i = 0; dt.Rows.Count > i; i++)
    {
        IRow row = sheet1.CreateRow(i + 1);
        for (int j = 0; dt.Columns.Count > j; j++)
        {
            row.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());
        }
    }

    MemoryStream ms = new MemoryStream(); …
Run Code Online (Sandbox Code Playgroud)

c# excel npoi asp.net-web-api

28
推荐指数
3
解决办法
1万
查看次数

VS 2017中的元组语法

在VS2017 RC中,当您尝试使用新的元组语法时,您收到以下错误:

CS8179未定义或导入预定义类型'System.ValueTuple`X'

为了使用元组语法,您必须手动将ValueTuple nuget包导入到项目中.没什么大不了的,因为它是预发布版本,我认为它将在RTM中更改,因此它将默认启用.不幸的是,在最终版本中仍然如此,您必须为每个项目下载nuget包以使用元组语法.

有没有办法默认为每个项目启用元组语法?

.net c# tuples c#-7.0

24
推荐指数
1
解决办法
3222
查看次数

Visual Studio 2022 将 git 存储库显示为“不受信任”

Visual Studio 2022 已开始将我的 git 存储库之一显示为“不受信任”。这是什么意思?我该如何修复它?

在此输入图像描述

git visual-studio-2022

16
推荐指数
1
解决办法
5628
查看次数

在XAML中为自定义MarkupExtension提供Intellisense

我创建了一个自定义MarkupExtension,允许一种简单的方法将事件转发FrameworkElements到视图模型上的方法.一切都很完美,除了Visual Studio在填写XAML时不提供任何Intellisense.有什么方法可以为Visual Studio提供提供Intellisense所需的信息吗?

MarkupExtension:

public class VmCall : MarkupExtension
{
    public string ActionName { get; }

    public VmCall(string actionName)
    {
        ActionName = actionName;
    }
    //.....
}
Run Code Online (Sandbox Code Playgroud)

视图模型:

class TestWindowVm : ViewModel
{
    public void Click()
    {
        MessageBox.Show("Click!");
    }
}
Run Code Online (Sandbox Code Playgroud)

使用MarkupExtensionin XAML:

<Window
    x:Class="WpfLib.Tests.VmCallMarkupExtension.TestWindow"   
    xmlns:wpfLib="clr-namespace:AgentOctal.WpfLib;assembly=WpfLib"
    //Many xmlns and attributes left out of example for brevity.
    d:DataContext="{d:DesignInstance TestWindowVm}"
    mc:Ignorable="d">
    <Button Click="{wpfLib:VmCall Click}"/>
</Window>
Run Code Online (Sandbox Code Playgroud)

理想情况下,当用户按下"VMCALL"后的空格键,智能感知应该对所有方法的列表呈现它们当前元素的DataContext(只是ClickTestWindowVm在这个具体的例子).

如果一些方法,使这项工作的基础上,与WinForms的以往的经验,我希望某种Attribute …

c# wpf intellisense xaml markup-extensions

11
推荐指数
1
解决办法
487
查看次数

Async/Await VS Task.Run:何时使用?如何使用?

好吧,我希望我得到了async/await的基础知识,但仍有一些问题在脑海里挥之不去.

但现在我正在谈论的问题.假设在这个简单的例子中

static void Main(string[] args)
{

    Method();

    Console.WriteLine("Main Thread");

    Console.ReadLine();

}

public async static void Method()

{

    await Task.Run(new Action(LongTask));

    Console.WriteLine("New Thread");

}

public static void LongTask()

{

    Thread.Sleep(8000);

    Console.WriteLine("Long Task");

}
Run Code Online (Sandbox Code Playgroud)

Main Thread在调用Method()并遇到等待8秒后,主线程仍然继续并打印.

因此,当遇到await时,Method()返回调用者,即返回到main函数,保存同步上下文并从那里继续执行.

Main Thread首先打印.

然后在8秒后完成,Long Task然后New Thread打印.

这部分我得到了.我的问题在于我的申请:

public IList<createcaseoutput> createCase(CreateCaseInput CreateCaseInput,SaveCaseSearchInput SaveCaseSearchInput)    
{
    .............
    SQL.CaseSQL.getCreateCaseParameters(CreateCaseInput, out strSPQuery, out listParam);    
    var AcctLst = rep.ExecuteStoredProcedure<createcaseoutput>(strSPQuery, listParam).ToList();

    if (!string.IsNullOrEmpty(AcctLst.ElementAt(0).o_case_seq.ToString()))

    {
        await saveCaseSearch(SaveCaseSearchInput, AcctLst.ElementAt(0).o_case_seq);
    }

    console.writeline("Async called");
    return AcctLst;    
}

public async …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading asynchronous async-await

10
推荐指数
1
解决办法
4726
查看次数

使用Entity Framework 6中的自定义约定控制列映射

我有一个类TypeEntity将作为几十个实体的基类.我正在使用TPC,所以我需要将基类的所有属性映射到具有具体类名称的表,并将该Key字段设置为数据库生成.

目前我正在EntityTypeConfiguration为每个实体类型执行此操作,如下所示:

class LineItemType : EntityTypeConfiguration<Models.LineItemType>
{
    public LineItemType()
    {
        this.Property(e => e.Key)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        this.Map(e => e.MapInheritedProperties()
                       .ToTable(nameof(LineItemType)));
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但非常重复.我必须记住为每个继承的类型创建一个配置类TypeEntity,设置键,并映射继承的属性.这似乎是一个习惯的理想情况Convention.


我创建了TypeEntityTpcConvention Convention如下:

class TypeEntityTpcConvention : Convention
{
    public TypeEntityTpcConvention()
    {
        this.Types<TypeEntity>()
            .Configure(e => e.Property(p => p.Key)
                             .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity));
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个设置Key为生成数据库,但我找不到任何方法来从约定内部访问属性的表映射.


理想情况下,我希望这样的事情:

this.Types<TypeEntity>()
    .Configure(e => e.MapInheritedProperties()
    .ToTable(e.ClrType.Name));
Run Code Online (Sandbox Code Playgroud)

或者甚至对每个需要映射的属性进行这样的调用:

this.Types<TypeEntity>()
    .Configure(e => e.Property(p=>p.Key)
                     .ToTable(e.ClrType.Name));
Run Code Online (Sandbox Code Playgroud)

这两者似乎都不存在.有什么方法可以控制内部属性的映射Convention吗?


经过一番更多的研究,它看起来像有可作为更先进的约定选择IStoreModelConventionIConceptualModelConvention,但有用的文档,如何使用这些严重缺乏.几个小时用断点和观察窗口戳它们之后,我还没想出如何使用这些接口来控制列映射.


我目前的解决方案是使用反射来查找继承的所有类型TypeEntityOnModelCreating,而属性映射到正确的表.这是有效的,但我更愿意使用一个约定,如果可能的话,因为这看起来像是为了制定约定的东西.我觉得我错过了一些明显的东西.

c# entity-framework entity-framework-6

9
推荐指数
1
解决办法
624
查看次数

在Visual Studio 2015中限制Visual Basic的新语言功能

我目前正在与一个开发团队合作开发一个Visual Basic项目,其中一些项目将在发布后立即转移到Visual Studio 2015,而一些人将在Visual Studio 2013上停留几个月.在使用RC进行测试时,我们发现Visual Studio将毫无问题地打开2013项目,但很乐意让用户使用VS 2013中用户无法使用的新语言功能,如字符串插值.如果2015用户签入此代码2013用户将收到编译错误.是否有任何项目,解决方案或Visual Studio设置会告诉编译器将功能限制为以前版本的VB.net中可用的功能?理想情况下,编译器在2015年尝试使用这些功能时应返回编译错误.

这个功能在项目属性>构建>语言版本的C#中可用,但我找不到任何VB.net的等价物,谷歌搜索失败了.

我只是想提一下,将.Net运行时版本设置为4.5没有用,因为这些新的语言功能是编译器级功能,可以在旧框架上完美运行.

vb.net visual-studio visual-studio-2015

8
推荐指数
1
解决办法
1561
查看次数

从Resharper撤消"Folder'<folderName>'不引入命名空间"

我在项目的子文件夹中创建了一个类,并且命名空间与文件夹结构不匹配.Resharper强调了命名空间,并且在查看Resharper为解决问题而提出的选项时,意外地选择了"Folder not not a namespace"选项.该设置存储在哪里?我想撤消该选择,以便Resharper强制执行命名空间/目录奇偶校验,至少对于该文件夹.

我已经检查了.sln和.csproj文件,以及有问题的目录,查找可能包含该信息的任何松散文件,并且无法找到Resharper如何存储它以便将其删除.

在此输入图像描述

c# resharper visual-studio

7
推荐指数
1
解决办法
387
查看次数

IOCP是在I/O发生时或之后运行的线程吗?

我想了解I/O完成端口,具体如何与使用async- await为I/O.

臭名昭着的文章没有线程谈论在I/O完成后短暂借用IOCP.因为本文的重点是要表明当花哨的硬件级I/O内容在飞行中时,没有一个线程被循环消耗

I/O完成了吗?没有.I/O已经完成了吗?没有.I/O已经完成了吗?不...

但后来我正在看这篇文章说的那个

"组件负责检查排队元素的完成端口"

并给出一个例子

public class IOCompletionWorker
{ 
    public unsafe void Start(IntPtr completionPort)
    {
        while (true)
        {
            uint bytesRead;
            uint completionKey;
            NativeOverlapped* nativeOverlapped;

            var result = Interop.GetQueuedCompletionStatus(
                completionPort, 
                out bytesRead,
                out completionKey,
                &nativeOverlapped, 
                uint.MaxValue);

            var overlapped = Overlapped.Unpack(nativeOverlapped);

            if (result)
            {
                var asyncResult = ((FileReadAsyncResult)overlapped.AsyncResult);
                asyncResult.ReadCallback(bytesRead, asyncResult.Buffer);
            }
            else
            {
                ThreadLogger.Log(Interop.GetLastError().ToString());
            }

            Overlapped.Free(nativeOverlapped);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
var completionPortThread = new Thread(() => new IOCompletionWorker().Start(completionPortHandle))
{
    IsBackground = true
};
completionPortThread.Start(); …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading asynchronous async-await

7
推荐指数
1
解决办法
553
查看次数

如何阻止Visual Studio 2015进行硬编码版本控制

我目前正在开发一个可执行的C++ VS2015项目.

我有一个文件version.h,它只是定义了一堆数字.

#define VERSION_MAJOR               3
#define VERSION_MINOR               0
#define VERSION_REVISION            0
#define VERSION_BUILD               2
#define VER_FILE_VERSION            VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD
...
Run Code Online (Sandbox Code Playgroud)

version.h用于项目的.rc文件中,以定义可执行文件的版本信息.

.rc文件看起来像

#include "resource.h"
#include "version.h"
...
VS_VERSION_INFO VERSIONINFO
 FILEVERSION VER_FILE_VERSION
 ...
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,每次添加资源以修改resource.h时,Visual Studio 2015似乎都会删除.rc文件中的#include"version.h",而是硬编码"version"中的所有值. H".

示例.rc文件的问题

#include "resource.h"
...
VS_VERSION_INFO VERSIONINFO
 FILEVERSION 3,0,0,2
 ...
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何阻止VS2015这样做呢?

visual-studio visual-c++ visual-studio-2015

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