小编Ali*_*eza的帖子

Visual Studio在开始构建之前等待很久

我们有一个中等规模的解决方案,约有20个项目.在其中一个我有我的业务实体.在编译任何项目时,visual studio会在此BusinessEntities项目上等待并挂起大约一分半钟.

我在SharpDevelop中尝试了我们的解决方案,它在18秒内编译了我们的完整解决方案.与MSBuild类似的时机.

我的猜测是VS试图找出项目是否需要编译,但这个过程比实际执行编译慢了大约15倍!

我无法切换到伟大的尖锐开发,它缺乏一些小的,但我们的调试方案的基本要求.

我是否可以阻止VS检查这个项目,并让它在没有这样的检查的情况下编译项目,就像sharpdevelop一样?

我已经知道在配置管理中取消选中项目以防止构建一些项目,但是我的开发人员会忘记他们需要在更新到最新源之后编译这个项目,并且他们面临的问题对他们来说似乎很奇怪.

编辑:有趣的调查结果:延迟发生在其中一个项目中.在配置管理器中,我取消选中所有项目,然后单独编译它们.所有项目都在几秒钟内编译完成!! 关键在于:如果直接构建该特殊项目,则在几秒钟内编译,如果正在构建(或跳过,因为它是最新的),因为构建依赖于它的另一个项目,VS挂起约一分半钟,然后决定编译它(或跳过它).我的结论是:Visual Studio正在检查是否有任何文件被更改,但由于某些原因,对于这个特殊项目来说效率极低!

c# build visual-studio-2010

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

防止visual studio将setter方法限制为内部

好吧,我使用visual studio 2015 CE,更新2.我通常做的一个生产力黑客是我创建空模型类,如:

public class PersonModel
{
}
Run Code Online (Sandbox Code Playgroud)

然后在选择表达式中使用它们,如:

db.People.Where(p => someCondition)
.Select(p => new PersonModel
{
    Id = p.Id,
    Name = p.Name,
    //set other properties
}).ToList();
Run Code Online (Sandbox Code Playgroud)

然后我去了又非现有属性IdName...并按Control+.要求Visual Studio来generate property Id对我.一切都很好,但它会创造:

public int Id { get; internal set; }
Run Code Online (Sandbox Code Playgroud)

如果我在asp.net webapi模型绑定中使用相同的方法,绑定将无声地失败并给我Id = 0.

所以我的问题是:有没有选择让VS创建公共setter,即:

public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

.net c# properties access-modifiers visual-studio-2015

17
推荐指数
1
解决办法
548
查看次数

AngularJS并在控制器中获取窗口滚动位置

我在理解如何在我的控制器中获取窗口的滚动位置时遇到一些麻烦,因此我可以围绕它构建逻辑.

从我一直在阅读的所有问题和答案中,最常被接受的答案似乎是编写一个计算滚动位置的指令,将该指令粘贴在一个元素上,就是这样.

但是,当你想要做的事情是:

if (scrollY > 100 ){
  $scope.showMenu = true;
}

if (scrollY > 500) {
  $scope.showFooter = true;
}
Run Code Online (Sandbox Code Playgroud)

这种方法似乎不起作用,因为无法从控制器访问指令中的计算位置.什么是正确的'Angular'方式,这仍然允许从控制器执行稍微复杂的逻辑?

javascript scroll angularjs

11
推荐指数
2
解决办法
4万
查看次数

更新到vs2017.3后,不会触发断点

我们有一个运行在Vs2017.3上的asp.net核心2.0项目(从1.x迁移)(从2017年更新).

更新后,断点不再被击中.Vs报告"断点当前不会被命中.源代码与原始版本不同".

在更新和迁移之前,事情是正常的.更新到2017.3之后以及迁移到asp.net core 2.0之前,可以看到此问题.

我知道解决方法:右键单击并强制断点,即使源代码不同也是如此.我需要一个解决方案.

清洁重建无效.多台计算机上出现此问题.

c# debugging break asp.net-core visual-studio-2017

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

如何在PostgreSQL中修复丢失的PostGIS SRID?

运行我的Rspec测试套件时收到以下错误:

PG::InternalError: ERROR:  GetProj4StringSPI: Cannot find SRID (4326) in spatial_ref_sys
Run Code Online (Sandbox Code Playgroud)

我知道我启用了PostGIS扩展.我该如何解决?

postgresql rspec postgis

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

防止调试器在编译的LambdaExpression中停止异常

在我的程序中,我创建动态lambda表达式,然后将它们编译为委托.然后调用这些代理以从我的实体中提取信息.一些代表可能会抛出异常,我已经抓住了我调用代理的异常.我已启用"仅启用我的代码"并将[DebuggerNonUserCode]属性应用于创建LambdaExpression的位置,已编译的位置以及调用的位置.但是因为在Debug> Exceptions> Common Language Runtime Exceptions中,选中了Thrown复选框,visual studio总是停止错误,这对开发人员来说是一个很大的不便.

似乎[DebuggerNonUserCode]应该以某种方式应用于已编译的委托,但是如何?还是其他任何建议?

谢谢.

c# debugging attributes visual-studio-2010 visual-studio

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

首先在EF代码中继承公共基类

我正在将我的EF POCO项目转换为Code.我更改了T4模板,以便我的所有实体都使用基类EntityBase,它为它们提供了一些与持久性无关的常用功能.

如果我使用[NotMapped]属性EntityBase,所有实体都继承了这个属性,我得到一个The type 'X.X.Person' was not mapped,我尝试使用EF的任何类型.

如果我[NotMapped]在所有属性上使用EntityBase,我会得到一个EntityType 'EntityBase' has no key defined. Define the key for this EntityType例外

仅供参考:我使用的是Ef 4.3.1

编辑:部分代码:

[DataContract(IsReference = true)]
public abstract class EntityBase : INotifyPropertyChanged, INotifyPropertyChanging
{
    [NotMapped]
    public virtual int? Key
    {
        get { return GetKeyExtractor(ConversionHelper.GetEntityType(this))(this); }
    }
    //other properties and methods!
}
Run Code Online (Sandbox Code Playgroud)

然后

[DataContract(IsReference = true), Table("Person", Schema = "PER")]
public abstract partial class Person : BaseClasses.EntityBase, …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef4-code-only ef-code-first

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

为什么使用FlagsAttribute定义EntityState枚举

我正在为我们的应用程序做一个简单的实体更改日志记录.出现的一个问题是,虽然DbEntityEntry.State属性的枚举值明显是互斥的(参见MSDN),但它是使用Flags属性定义的,并且选择的值就好像它们可以组合一样.

假设这些值互相排斥是否安全?他们为什么选择这条道路?

.net c# entity-framework

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

如何强制CSharpCodeProvider为特定的目标框架进行编译?

我有一个包含c#项目,一些netstandard2.0和其他项目的解决方案.net4.7。启动项目当然是net47

一方面,项目使用创建代码,然后使用CodeDom进行编译CSharpCodeProvider。问题是在某些计算机上,它尝试为.netstandard编译程序集,但失败。预期会失败:生成的程序集引用EF仅可用于完整.net framework

我该如何强行CSharpCodeProvider反对.net47

public bool GenerateAssembly(
        CodeDomBusinessCode compileUnit
        , string fileName
        , string assembliesPath
        , out IEnumerable<string> errors)
    {
        var provider = new CSharpCodeProvider();
        var parameters = new CompilerParameters
        {
            GenerateExecutable = false,
            OutputAssembly = fileName,
            GenerateInMemory = false
        };
        parameters.ReferencedAssemblies.Add("System.dll");
        parameters.ReferencedAssemblies.Add("System.Runtime.dll");
        parameters.ReferencedAssemblies.Add("System.Core.dll");
        parameters.ReferencedAssemblies.Add("System.ComponentModel.Composition.dll");
        parameters.ReferencedAssemblies.Add(Path.Combine(assembliesPath, "EntityFramework.dll"));
        parameters.ReferencedAssemblies.Add("System.ComponentModel.DataAnnotations.dll");
        parameters.ReferencedAssemblies.Add(Path.Combine(assembliesPath, "GlobalE.Server.Contracts.dll"));

        var results = provider.CompileAssemblyFromDom(parameters, compileUnit.Code);
        if (results.Errors.Count > 0)
        {
            errors = …
Run Code Online (Sandbox Code Playgroud)

c# codedom roslyn

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

FindAsync很慢,但延迟加载很快

在我的代码中,我曾经使用加载相关实体await FindAsync,希望我更好地符合c#async指南.

var activeTemplate = await exec.DbContext
.FormTemplates.FindAsync(exec.Form.ActiveTemplateId);
Run Code Online (Sandbox Code Playgroud)

并且它运行缓慢,在sql server profiler中速度很慢,查询文本在SSMS中很快.花了5秒钟才获取此行.

替代方案:

var activeTemplate = exec.Form.ActiveTemplate;
Run Code Online (Sandbox Code Playgroud)

要快得多.无论如何,问题似乎不是参数嗅探,因为快速和慢速查询中的读取次数是相同的.

一个可能无关紧要的点是被提取的对象包含一个包含~1MB文本的字符串属性.该应用程序是asp.net mvc,与sql server在同一台计算机上运行,​​使用(local)连接.

观察到的缓慢是什么原因?

编辑:@ jbl评论后,我做了一些实验:

var activeTemplate = await exec.DbContext.FormTemplates
.FirstOrDefaultAsync(x => x.Id == exec.Form.ActiveTemplateId); // slow

var activeTemplate = exec.DbContext.FormTemplates
.FirstOrDefault(x => x.Id == exec.Form.ActiveTemplateId); // fast
Run Code Online (Sandbox Code Playgroud)

c# sql-server performance entity-framework async-await

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

默认情况下,从git Commit中删除Visual Studio中的文件

一些开发人员正在开发一个项目,每个项目都在Web.Config中有自己的连接字符串.每隔一段时间(通常是几个小时!),开发人员就会忘记将web.config排除在提交之外,很快每个人都必须经历一个错误的循环,发现它是因为连接字符串错误,并纠正它.原因是当人们选择提交更改时,VS会将所有更改添加到提交中.他们可以排除它,但他们忘了.

有没有办法从提交中排除文件默认?请注意,这与从存储库中排除文件不同,可以在.gitignore中完成.

git visual-studio

4
推荐指数
1
解决办法
5549
查看次数

如何将循环依赖的打字稿类移动到单独的文件中

在一个有角度的项目中,我们有一个基类,从中可以导出几个具体的类。在少数情况下,这些类以循环方式相互引用。

当这些文件位于不同的类中时,项目将成功编译,但无法在浏览器中运行。

当所有类都放在一个.ts文件中时,一切正常,但我们的文件非常长,很难维护。

有没有办法分离这些文件?即使是现有的以智能方式合并文件的预编译任务也将受到赞赏。

编辑:我熟悉导入,模块等。问题是循环依赖。同样,不能通过更多抽象优雅地处理它。我尝试添加最少的复制代码。

编辑:这是复制品,产生警告:它还显示了我开始具有循环依赖关系的原因。

base-class.ts:

import {StorageModel} from './storage-model';
import {SubClass1} from './sub-class-1';

export abstract class BaseClass {
  children: BaseClass[];

  abstract loadFromModel(model: StorageModel);

  doSomething() {
    if (this.children[0] instanceof SubClass1) {
      (this.children[0] as SubClass1).action1();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

sub-class-1.ts:

import {BaseClass} from './base-class';
import {StorageModel} from './storage-model';
import {SubClass2} from './sub-class-2';

export class SubClass1 extends BaseClass {
  title: string = 'hello';
  action1() {
  }

  loadFromModel(model: StorageModel) {
     (this.children[0] as SubClass2).action2();
  }
}
Run Code Online (Sandbox Code Playgroud)

和类似的sub-class-2.ts。我在cli cli控制台中收到以下警告:

WARNING in Circular dependency …
Run Code Online (Sandbox Code Playgroud)

typescript angular

4
推荐指数
1
解决办法
1620
查看次数

在ASP.NET Core MVC中,小数的模型绑定不接受千位分隔符

对于具有decimal属性的模型,如果来自客户端的值包含逗号作为千位分隔符,则模型绑定将失败。

我们该如何解决呢?任何解决方案(全局上,控制器/操作本地或模型/属性本地)都是好的。

我有一个解决方法,那就是拥有一个string可以读写的属性decimal。但我正在寻找更清洁的解决方案。

c# model-binding asp.net-core-mvc

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