小编Mat*_*oks的帖子

在单个解决方案中,我在DNX/ASP.NET 5项目(project.json/xproj)和其他C#项目(csproj)之间共享代码有哪些选择?

脚本

我正在尝试使用Visual Studio 2015 RC,特别是要切换到新的ASP.NET 5框架,项目结构和运行ASP.NET 5应用程序的新DNX.

我的雇主有许多针对.NET Framework 4.5.2的现有解决方案.在我们现有的Visual Studio解决方案中,我们可能有以下项目:

[Solution] Sample.sln
    [Folder] src
        [Project] ClassLibrary.csproj
        [Project] WindowsService.csproj
        [Project] WebApplication.csproj
    [Folder] test
        [Project] ClassLibrary.UnitTests.csproj
        ...
Run Code Online (Sandbox Code Playgroud)

在这种情况下,ClassLibrary.csproj是一个包含共享代码的C#类库.这是一个依赖/双方所引用WindowsService.csprojWebApplication.csproj.

我们没有特别努力的目标.NET的核心,dnxcore50.在这个阶段,我们很高兴以.NET Framework为目标dnx451.但是,我们绝对试图利用ASP.NET 5的新功能和相关的项目结构.

以下是我想到的一些选项,但两者都有问题.

选项1

当我们用WebApplication.csproj新的ASP.NET 5 DNX项目替换上面的项目时,WebApplication-dnx我们仍然可以引用ClassLibrary.csproj这个新的DNX项目和现有WindowsService.csproj项目.但是出现了一些问题:

  1. 这种方法意味着对ClassLibrary.csproj需要重建的代码的任何更改都在运行中可见WebApplication-dnx.这并不奇怪,但意味着我们无法获得完整的源代码编译优势WebApplication-dnx.

  2. 我们不能轻易地针对其他框架,例如dnxcore50.如上所述,这不是现阶段的具体目标.

选项2

如果我们ClassLibrary.csproj用DNX类库项目替换^ ClassLibrary-dnx那么选项1中的问题不适用.这种方法似乎更加符合.NET运行时和ASP.NET等相关技术的前进方式.

不过,我不能找到一种方法来引用ClassLibrary-dnxWindowsService.csproj.如果这种方法是可行的,我想这个解决方案与项目级别选项有关Produce outputs on build,然后引用.nupkg …

.net .net-core dnx asp.net-core

46
推荐指数
1
解决办法
7767
查看次数

实体框架代码首先一对一要求 - 必需的关系

使用Entity Framework Code First 4.3.1时,可以创建多重1对1的关系.也就是说,关系的每一端都有一个实体.

可以将所需的 1对1关系配置为必需必需 - 可选 ^.但是,当我在两者之间切换时,我看不出任何差异:

  • 生成数据库架构.我的目标是SQL Server 2008.
  • EF的运行时行为.

因此,我能够创建一个RequiredPrincipalAs记录而没有相应的RequiredDependentAs记录,尽管关系被配置为required-required.这似乎与HasRequired(...)的文档相矛盾:

从此实体类型配置所需的关系.除非指定了此关系,否则无法将实体类型的实例保存到数据库.数据库中的外键将不可为空.

http://msdn.microsoft.com/en-us/library/gg671317

时需提供-关系的实体:

public class RequiredPrincipalA
{
    public int Id { get; set; }
    public virtual RequiredDependentA DependentA { get; set; }
}

public class RequiredDependentA
{
    public int Id { get; set; }
    public virtual RequiredPrincipalA PrincipalA { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

要求,可选的关系实体:

public class RequiredPrincipalB
{
    public …
Run Code Online (Sandbox Code Playgroud)

entity-framework

9
推荐指数
2
解决办法
4744
查看次数

使用DbContext和EF Code First更改跟踪差异

在使用EF Code First时,有两种变更跟踪选项:

  1. 基于快照的更改跟踪
  2. 基于通知的基于通知的变更跟踪

使用每种更改跟踪方法运行时,请考虑以下代码.假设具有默认配置选项的DbContext实例. 

var o = context.MySet.First();
o.MyProperty = 42;
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

如果由第一行上下文加载和跟踪的实体实例对于"MyProperty"已经具有值42,则在第三行的"SaveChanges"调用期间,其在更改跟踪器中的状态是不同的. 

  1. 基于快照的更改跟踪 - 其状态为"未更改". 
  2. 使用代理进行基于通知的更改跟踪 - 其状态为"已修改". 

鉴于在基于通知的变更跟踪下,在调用"SaveChanges"期间将向数据库发送不必要的更新语句我设想大多数开发人员更喜欢基于快照的变更跟踪的行为. 

这种行为的意义是否有意?

当使用基于通知的代理更改跟踪时,是否有办法实现与基于快照的更改跟踪相同的行为?

请注意,我认为这与此功能建议有关 -  http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1015363-better-change-tracking-for-poco-proxies

entity-framework

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

是否可以为TFS2015.2构建定义命令行步骤配置"消息突出显示模式"?

可以配置TFS2015.2 Error message highlight patternWarning message highlight patternTFS2015.2 Command Line吗?

例如,我可能有以下构建定义来运行命令行实用程序,比如gulp执行某些任务,例如代码linting.

显示命令行步骤的示例构建定义

stdout实用程序的精确标准输出(via )将根据正在运行的精确lint任务而变化.例如,一个用于分析TypeScript代码的工具和另一个用于分析Sass代码的工具.

此外,该实用程序可以:

  • 将消息写入错误流(通过stderr).
  • 返回非零退出代码.

上述两种情况都不适合我,因为在某些情况下我不希望TFS认为构建步骤失败.但我确实希望在日志和构建摘要中突出显示警告.

能够教授Command Line关于表示警告和错误的特定输出消息模式的步骤将是有用的.

Command Line步骤的构建日志中,我看到:

构建日志提取显示消息高亮模式

这似乎提示了一种为输出配置线匹配模式的方法,它表示警告和错误.但是,我找不到配置这些的方法,因此我的问题.

我应该指出,我知道还有其他方法可以实现这一目标:

  • 例如,一种方法是通过旨在包装命令行实用程序的目标构建步骤.例如内置Gulpnpm步骤,或者可能是自定义创作的步骤/扩展.

  • 另一种方法是发出记录命令从构建脚本这里问.

我的问题具体涉及Command Line在这些选项不可用或不可取时直接使用内置通用步骤.

tfs tfsbuild tfs-2015 azure-pipelines

5
推荐指数
1
解决办法
1127
查看次数