安装可以使用.NET 4.0或4.5的应用程序时,安装先决条件.NET框架时的最佳做法是什么?你如何使用Burn in WiX实现它?
这些是我所知道的选项和权衡:
选项1:安装.NET 4.0(正如您所需)
选项2:如果不存在.NET 4.5,请安装.NET 4.5
选项3:仅当.NET 4.x不存在时才安装.NET 4.5
据我所知,如果性能改进很重要,最佳做法是选项2,如果平均部署速度很重要,则选择3.这听起来不错吗?我错过了选项1的任何优势吗?最重要的是,如果选项3确实有意义,那么在从Web安装.NET时如何使用Burn实现它?
我可能没想到正确的方向.我对Dependency Injection和ASP.Net Core相当新.
我有一个ASP.Net核心网站,其中一个任务是将数据从Excel工作表导入用户将上传的数据库.excel表格可能很大,数据转换任务也很耗时,因此我希望在后台执行它们.即用户将上传工作表,响应将立即发送,后台作业/线程将导入数据.
我正在尝试通过以下方式运行后台作业:
Task.Run(() => ProcessImport(model));
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是Process导入方法调用具有存储库类的服务,这些存储库类通过作为Scoped添加的ASP.Net依赖注入容器访问AppDbContext,并且一旦响应被发回,就会释放上下文.我收到一个运行时异常,你不能在它被处置后使用上下文.
我的问题是,处理这种情况的最佳方法是什么?我应该制作AppDbContext单例吗?我应该在ProcessImport方法中创建一个新的AppDbContext实例,并将其传递给它吗?我看过DbContext不是线程安全的,所以这是一个好方法吗?
dependency-injection background-process entity-framework-core asp.net-core-mvc asp.net-core
我有一个Linq集合Things,其中Thing有一个Amount(十进制)属性.
我正在尝试针对特定事物的子集对此进行聚合:
var total = myThings.Sum(t => t.Amount);
Run Code Online (Sandbox Code Playgroud)
这很好用.但后来我添加了一个条件,让我在结果中没有任何东西:
var total = myThings.Where(t => t.OtherProperty == 123).Sum(t => t.Amount);
Run Code Online (Sandbox Code Playgroud)
而不是得到total = 0或null,我得到一个错误:
System.InvalidOperationException:无法将null值分配给类型为System.Decimal的成员,该成员是非可空值类型.
这真是令人讨厌,因为我没想到这种行为.我本来期望总数为零,也许是null - 但肯定不会抛出异常!
我究竟做错了什么?什么是解决方法/修复?
编辑 - 例子
感谢大家的评论.这是一些代码,复制和粘贴(未简化).它是LinqToSql(也许这就是为什么你无法重现我的问题):
var claims = Claim.Where(cl => cl.ID < 0);
var count = claims.Count(); // count=0
var sum = claims.Sum(cl => cl.ClaimedAmount); // throws exception
Run Code Online (Sandbox Code Playgroud) 一些Angular UI Bootstrap指令(例如datepicker)具有如下配置指令:"所有设置都可以作为属性提供,也可以<datepicker>通过全局配置datepickerConfig."
虽然列出了配置选项,但没有描述我是什么*Config以及如何全局配置一个.听起来这是Angular的标准部分.是吗?我如何使用此配置模式,以及它在哪里记录?
我是Xamarin Forms的新手,我为Menu创建了一个ContentPage.我的背景需要线性渐变色.但我找不到任何告诉我如何创建背景渐变颜色的链接.我也希望在按钮背景的颜色位置像android中的选择器.如果您有任何信息,请给予回复.
我正在使用asp net core 1.0和xunit.
我正在尝试为一些使用的代码编写单元测试IMemoryCache.但是每当我尝试在I中设置一个值时,IMemoryCache我都会得到一个Null参考错误.
我的单元测试代码是这样的:
将IMemoryCache注入到我想要测试的类中.但是,当我尝试在测试中设置缓存中的值时,我得到一个空引用.
public Test GetSystemUnderTest()
{
var mockCache = new Mock<IMemoryCache>();
return new Test(mockCache.Object);
}
[Fact]
public void TestCache()
{
var sut = GetSystemUnderTest();
sut.SetCache("key", "value"); //NULL Reference thrown here
}
Run Code Online (Sandbox Code Playgroud)
这是班级测试......
public class Test
{
private readonly IMemoryCache _memoryCache;
public Test(IMemoryCache memoryCache)
{
_memoryCache = memoryCache;
}
public void SetCache(string key, string value)
{
_memoryCache.Set(key, value, new MemoryCacheEntryOptions {SlidingExpiration = TimeSpan.FromHours(1)});
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是......我需要以IMemoryCache某种方式设置吗?为DefaultValue设置一个值?当IMemoryCache被嘲笑什么是默认值?
如何System.Net.Http.Headers从ASP.NET Core控制器的命名空间中获取强类型头类?在派生的控制器中Controller,Request.Headers可用,但它只是返回IHeaderDictionary.还有一个扩展方法HeaderDictionaryTypeExtensions.GetTypedHeaders,但它返回RequestHeaders,它只有某些标题.该类HttpRequestHeaders具有最全面的标题列表,但不清楚如何访问它.
例如,你怎么会得到一个AuthenticationHeaderValue?一种选择是AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]),但这需要对头名称进行硬编码.也许有一种非硬编码方式HttpRequestHeaders.Authorization.
我最近决定更新我的Xamarin工作区中的所有内容,包括所有nuget包和Xamarin表单.
我首先安装了所有最新的Xamarin.android.support软件包,这些软件包与当前版本的Xamarin表单发生了冲突,所以,决定我还需要更新Xamarin表单,删除它,安装所有其他软件包(工作很可爱) ,现在我想再次重新安装Xamarin表单,但我收到:
无法解析依赖项.'Xamarin.Android.Support.Design 23.4.0.1'与'Xamarin.Forms 2.3.0.107约束:Xamarin.Android.Support.Design(= 23.3.0)'不兼容.
有什么建议?
如果我做:
int updateGamePlays = db.tblArcadeGames.Where(c => c.ParentGameID == GameID).Sum(c => c.Plays);
Run Code Online (Sandbox Code Playgroud)
如果此查询中未返回任何记录,则抛出:
System.InvalidOperationException:无法将null值分配给类型为System.Int32的成员,该成员是非可空值类型.
让它返回0的唯一方法是:
int updateGamePlays = db.tblArcadeGames.Where(c => c.ParentGameID == GameID).Sum(c => (int?)c.Plays) ?? 0;
Run Code Online (Sandbox Code Playgroud)
在数据库中c.Plays是一个不可为空的int.
在集合论中,空集的总和应该等于0(ref).Linq-to-SQL是如何决定让它返回的null呢?
我希望按照json.net性能提示文档的建议使用流,但是我无法找到如何获取http状态代码而没有典型的等待HttpResponse.
是否有一种方法可以在不读取数据的情况下首先获取状态代码?所以仍然利用流?
c# ×4
asp.net-core ×3
linq ×2
linq-to-sql ×2
xamarin ×2
aggregate ×1
angularjs ×1
burn ×1
http-headers ×1
httpclient ×1
json.net ×1
math ×1
mocking ×1
moq ×1
set ×1
stream ×1
sum ×1
unit-testing ×1
wix ×1
wix3.6 ×1