小编gza*_*zak的帖子

Nuget的最佳实践:调试还是发布?

目前,我将发布版本与Nuget一起打包到nuget.org的官方版本,但是我使用Nuget将调试版本打包为符号源推送到symbolsource.org.

编辑:( Jon Skeet,与Noda Time开发有一些偏见)

NuGet现在支持推送到NuGet gallery symbolsource.org(或类似的服务器),如文档所述.不幸的是,这里有两个相互矛盾的要求:

  • 当只使用库而不需要调试时,你真的想要一个发布版本.毕竟,这就是发布版本的用途.
  • 在调试库以进行诊断时,您确实需要一个禁用所有适当优化的调试版本.毕竟,那就是调试构建的目的.

这没关系,但是NuGet没有(据我所知)允许在同一个包中以有用的方式发布发布和调试版本.

所以,选择是:

  • 将调试版本分发给每个人(如文档中的示例所示),并使用任何大小和性能命中.
  • 将发布版本分发给每个人,并且稍微有点受损的调试体验.
  • 寻找一个非常复杂的分发策略,可能提供单独的发布和调试包.

前两个真正归结为调试和发布版本之间差异的影响......虽然值得注意的是,想要进入库代码之间也存在很大差异,因为你想要检查一些行为,并且想要调试库的代码,因为你相信你发现了一个bug.在第二种情况下,最好将库的代码作为Visual Studio解决方案并以这种方式进行调试,因此我不会过多关注这种情况.

我的诱惑是继续发布版本,期望相对较少的人需要调试,并且那些不会受发布版本中的优化影响很大的人.(无论如何,JIT编译器完成了大部分优化.)

那么,我们还没有考虑过其他选择吗?是否有其他考虑因素可以达到平衡?将NuGet软件包推向SymbolSource是否足够新,"最佳实践"真的还没有建立?

debugging release visual-studio nuget

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

使用asp.net属性路由的根路径的默认路由

我正在使用ASP.NET 5 RC中的属性路由,包含在Visual Studio 2013 RC版本中.

我想通过根路径,/导致规范/Home/Index路径,但我找不到一种方法只使用属性路由来做到这一点.是否有可能,如果不是,如果我也使用OWIN SelfHost,我将如何做?换句话说,我HttpConfigurationWebApp.Start<T>方法中手动设置我自己的类(其中T有一个Configure(IAppBuilder)在启动时调用的方法)而不是通过该RouteTable.Routes对象.或者我应该通过RouteTable.Routes对象?当我尝试时,我没有太多运气...

编辑:这是我到目前为止所尝试的:

// normal Web API attribute routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
   name: "DefaultWeb",
   routeTemplate: "{controller}/{action}",
   defaults: new { controller = "Home", action = "Index" }
);
Run Code Online (Sandbox Code Playgroud)

下面的第二次尝试看起来有点可疑,因为我的HttpConfiguration对象与静态RouteTable.Routes对象的关系并不清楚:

// normal Web API attribute routes
config.MapHttpAttributeRoutes();

RouteTable.Routes.MapRoute(
   name: "DefaultWeb",
   url: "{controller}/{action}",
   defaults: new { controller = "Home", action = "Index" }
);
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc self-hosting asp.net-mvc-routing owin visual-studio-2013

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

为什么"本地删除,更新时传入删除"目录存在冲突?

这更像是一个假设的问题,但我一直想知道为什么这个案子被认为是冲突.如果我在本地删除了一个已经从存储库中删除的目录,为什么这不会像你期望的那样解决?我不知道哪个角落的案例会使冲突地位成为必要?

svn tree-conflict

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

意外删除了Git Shell快捷方式

那它在哪里?我检查了通常的嫌疑人,即程序文件和程序文件(x86),但我没有在那里看到任何GitHub.

github-for-windows

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

无法调试Visual Studio插件

问题说明了一切.我正在尝试编写一个Visual Studio插件(2012),实验实例总是在没有运行插件的情况下启动.主实例中没有命中断点,实验实例也没有加载插件.

我应该指出:它曾经一次或两次工作,然后我删除了项目,因为我认为这是一个错误的项目,但最终用相同的名称重新创建它.

没有任何摆弄"允许插件加载"重置实验实例手动清理注册表修复问题.我也试过寻找我的addin dll,但它不在列表中.我完全没有想法和可能的搜索条件.有什么建议?

add-in visual-studio-addins visual-studio visual-studio-2012

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

为什么必须使用quoted_identifier才能使用过滤索引?

这里有很多关于如何处理这个混乱的SO和文章的问题,但我的问题更为基础:为什么?带引号的标识符似乎是引擎如何解释查询的属性,而与内部数据无关.就索引和插入/更新查询而言,谁在乎呢?为什么这个设置很重要?

假设您允许插入/更新成功,并且在带有筛选索引的表中将quoted_identifier设置为OFF - 究竟会破坏什么?

sql-server quoted-identifier filtered-index

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

Visual Studio 2012 Code First默认情况下仍使用SQLEXPRESS

我创建了一个全新的Web API项目,创建了一个简单的Code First模型(一个类的id和的DbContext对象,这就是它),并在包管理器控制台运行启用的迁移.

我注意到它在SQLEXPRESS而不是LocalDB中创建了数据库,尽管DefaultConnection字符串指向Web.config文件中的(LocalDB).这会导致后续查询失败,声称数据库尚未初始化.

如何在VS 2012中将Enable-Migrations命令指向LocalDB而不是SQLExpress?我已经尝试安装SQL Management Studio 2012 Express并停止SQLEXPRESS数据库,但这只会导致Enable-Migration命令失败.

有小费吗?

注意:我安装了VS 2010,以及它附带的所有默认软件(如SQL Server),所以这可能是干扰.

sql-server-express entity-framework-5 localdb visual-studio-2012

6
推荐指数
2
解决办法
3053
查看次数

Antlr v4中的CSS语法很好

对于antlr4,有没有好的CSS语法?我知道antlr3有一些语法,但事实证明,如果没有"词法分析器模式"(在v4中添加),CSS解析并不容易.为什么?

考虑以下CSS选择器:

.hello.world { /* ... */ }
.hello .world { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

在大多数语法中,空格只是被忽略了.但是如果忽略空格,就无法在解析器级别区分上面的两个选择器.

再说一遍,如果你不忽略空格,那么语法会变得非常嘈杂吗?或WS*模式无处不在,因为空格几乎没有意义,除非它出现在选择器中.

这是来自antlr4的模式的来源,因为只要你输入不同的上下文(即不要忽略"selector"上下文中的空格),你就可以为词法分析器模式定义词法分析器的新规则.

也就是说,我会接受antlr3的任何语法,只要它正确处理空格,因为这是我们现在正在使用的版本;-)

css antlr antlr3 antlr4

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

使用请求中的信息添加瞬态服务

我在 asp.net core 中有一个使用内置 DI 框架的应用程序。我想向提供者添加每个请求(即瞬态)服务,但我想在其构造中实际使用该请求。

services.AddTransient<IMyService>(provider => { ... });
Run Code Online (Sandbox Code Playgroud)

这是我能找到的最接近的重载,但该provider对象没有任何有关当前请求的信息。有没有一种方法可以实现我想要做的事情,而无需升级到更强大的 DI 框架?

dependency-injection asp.net-core

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

没有ASP.NET Core的.NET Core中的DI

我正在寻找使用.NET Core编写一个守护进程,它基本上就像一个chron作业,只是在某个时间间隔内编排API/DB调用.因此,它不需要公开任何Web路由,因此不需要ASP.NET Core.

但是,afaik ASP.NET Core是您可以获得Startup所有可能需要的所有DI管道和基于环境的配置的好类.

我看到它的方式,我有两个选择:

  1. 放弃ASP.NET Core并自己连接DI框架.如果我走那条路,我该怎么做?
  2. 包含仅用于DI部分的ASP.NET Core,但是如何在任何请求上下文之外生成"永远运行"的后台任务?我的理解是,DI框架非常假设有一些进入的请求来协调所有注入.

daemon dependency-injection .net-core asp.net-core

5
推荐指数
2
解决办法
1277
查看次数