小编Bre*_*ias的帖子

以构建步骤执行XSLT转换

在Visual Studio构建期间,我需要从另一个XML文件生成XML文件.对我来说很明显,XSLT模板和转换正是我所需要的.

我更喜欢这样做的方法是使用项目文件中的"自定义工具"属性.是否已有可用于此目的的内置工具?我的下一个选择可能是使用csproj的预构建步骤.再次,是否有一个(Visual Studio或MSBUILD)预先存在或预安装的工具,我可以从预构建步骤调用来执行此操作?

最后,如果需要,我可以修改.csproj文件本身以添加执行转换的MSbuild任务(我认为MSBuild带有这样的任务 - 如果不是我知道它们可以下载).

总的来说,我只想知道完成这项工作的最简单方法,以及如何做到这一点.我已经知道如何编写XSL模板.:)

msbuild xslt automation transform visual-studio

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

REST(HATEOAS)和ReactJS

我有兴趣使用REST 的HATEOAS原则来减少SPA应用程序中的业务逻辑.在React特定的背景下,我想知道是否存在使这种做法变得不切实际的挑战,如果没有,那么有什么好的策略可以遵循?

使用HATEOAS从UI中删除业务逻辑的概念示例:

我只发现一个链接表明React/Flux与HATEOAS策略不兼容,并且其他地方没有有意义的讨论.在React/Flux应用程序中它真的不可行吗?SO帖子没有得到足够的重视.有没有人有最喜欢或推荐的方法来取得成功(有或没有Flux或Redux)?

有人给出了一个在Angular上下文中利用HATEOAS的相当详细的例子.我正在为React寻找类似的东西.

就个人而言,我正在描绘rel超媒体链接中的标签,控制渲染哪些JSX组件(条件JSX).对于真实世界的React应用来说,这是天真的吗?也许有条件地渲染的React组件太粗糙,无法以这种方式使用?

我假设超媒体链接由HAL实现提供,或者符合ATOM提要约定(RFC4287).

rest flux hateoas reactjs redux

18
推荐指数
2
解决办法
5136
查看次数

URL路径参数用例

通常,当我想到URL中的参数时,我会想到查询字符串.但从技术上讲,在路径段中指定参数也是合法的.因此给出这样的URL:

http://www.a.com/frisbee/brand

写这个是合法的:

http://www.a.com/frisbee;color=red;size=small/brand;test=1

在实践中,我从未见过这一点.哪些框架(如果有的话)可以利用这个?

我最近在使用ASP.NET MVC3,我不确定它是否可以提取这些参数.

parameters url uri http asp.net-mvc-3

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

在ASP.NET Core中发现通用控制器

我正在尝试创建这样的通用控制器:

[Route("api/[controller]")]
public class OrdersController<T> : Controller where T : IOrder
{
    [HttpPost("{orderType}")]
    public async Task<IActionResult> Create(
        [FromBody] Order<T> order)
    {
       //....
    }
}
Run Code Online (Sandbox Code Playgroud)

我打算使用{orderType} URI段变量来控制控制器的泛型类型.我正在尝试自定义IControllerFactoryIControllerActivator,但没有任何工作.每次我尝试发送请求时,都会收到404响应.我的自定义控制器工厂(和激活器)的代码永远不会执行.

显然问题是ASP.NET Core期望有效的控制器以后缀"Controller"结束,但我的通用控制器却具有(基于反射的)后缀"Controller`1".因此,它声明的基于属性的路线将被忽视.

在ASP.NET MVC中,至少在早期,DefaultControllerFactory负责发现所有可用的控制器.它测试了"Controller"后缀:

MVC框架提供了一个默认的控制器工厂(恰当地命名为DefaultControllerFactory),它将搜索appdomain中的所有程序集,查找实现IController的所有类型,其名称以"Controller"结尾.

显然,在ASP.NET Core中,控制器工厂不再负有此责任.正如我之前所说,我的自定义控制器工厂为"普通"控制器执行,但从不为通用控制器调用.因此,在评估过程的早期还有其他一些东西可以控制控制器的发现.

有谁知道什么"服务"界面负责该发现?我不知道自定义界面或"钩子"点.

有没有人知道如何让ASP.NET Core"转储"它发现的所有控制器的名称?编写单元测试可以很好地验证我期望的任何自定义控制器发现确实有效.

顺便提一下,如果存在允许发现通用控制器名称的"钩子",则意味着还必须规范路由替换:

[Route("api/[controller]")]
public class OrdersController<T> : Controller { }
Run Code Online (Sandbox Code Playgroud)

无论给出什么值T,[controller]名称必须保持简单的基本通用名称.使用上面的代码作为示例,[controller]值将是"Orders".它不会是"Orders`1"或"OrdersOfSomething".

注意

这个问题也可以通过显式声明封闭泛型类型来解决,而不是在运行时生成它们:

public class VanityOrdersController : OrdersController<Vanity> { }
public class ExistingOrdersController : OrdersController<Existing> { }
Run Code Online (Sandbox Code Playgroud)

上面的工作,但它产生我不喜欢的URI路径:

~/api/VanityOrders
~/api/ExistingOrders
Run Code Online (Sandbox Code Playgroud)

我真正想要的是这个:

~/api/Orders/Vanity
~/api/Orders/Existing
Run Code Online (Sandbox Code Playgroud)

另一个调整让我得到我正在寻找的URI:

[Route("api/Orders/Vanity", …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc url-routing asp.net-web-api asp.net-core

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

SQL Server排序规则选择

我今晚花了很多时间试图找到关于在我的SQL Server 2008 R2安装中应用哪种校对选择的指导,但几乎所有在线的内容基本上都是"选择适合你的东西". 非常无益.

我的背景是新的应用程序开发.我并不担心与以前版本的SQL Server(即<= 2005)的向后兼容性.我对存储来自全球各地的语言的数据非常感兴趣 - 而不仅仅是拉丁语.我在网上找到的帮助很少,这表明我应该避免所有"SQL_"排序规则.这缩小了我选择使用基于Windows语言环境的二进制或"非二进制"排序规则.

如果我使用二进制文件,我会收集我应该使用"BIN2".所以这是我的问题.如何确定是应该使用BIN2还是仅使用"Latin1_General_100_XX_XX_XX"?我的蜘蛛感觉告诉我BIN2将提供"不太准确"的校对,但对所有语言都更通用(并且速度快!).我还怀疑二进制排序规则区分大小写,区分重音和假名敏感(是吗?).相反,我怀疑非二进制排序规则对拉丁语言最有效.

该文档不支持我上述的声明,我正在做出有根据的猜测.但这是问题所在!为什么在线文档如此之薄以至于选择留给猜测?甚至书"SQL Server 2008 Internals"也讨论了各种选择,但没有解释为什么以及何时选择二进制排序规则(与非二进制窗口排序规则相比).Criminy!

sql-server installation collation internationalization

15
推荐指数
2
解决办法
4669
查看次数

代码合同比 对象初始化器(.net 4.0)

从表面看,对象初始化器似乎对.net 4.0"代码契约"提出了问题,通常在对象构造函数完成时应该建立不变量.然而,据推测,对象初始化器需要在构造完成后设置属性.

我的问题是,"代码契约"的不变量是否能够处理对象初始化器,"好像"属性是在构造函数完成之前设置的?那确实非常好!!

.net design-by-contract .net-4.0 object-initializers code-contracts

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

'var'的目的是什么?

可能重复:
var关键字有什么意义?

不是在问它是如何运作的.我不是在问它是否会影响性能.我已经知道那些答案了.

我想知道MS C#团队首先将它添加到语言中的原因.你不会在语言中加入无聊的东西.一定有一个值得注意的问题.这是什么问题?

我见过的"它解决的问题"最接近的例子是使用匿名类型时,如下所示:

var linqResult = from element in SomeCollection s
                 elect new { element.A, element.B } 
Run Code Online (Sandbox Code Playgroud)

具有讽刺意味的是,样式和编码标准指南(例如Microsoft提供的)建议编码人员避免在结果类型不明显时使用'var'.换句话说,'var'的(推测)预期目的与编码标准指南相冲突.

如果我正在编写编码标准,并试图防止过度使用'var',我有点倾向于说"仅使用'var'来回应匿名类型." 但这带来了问题的全方位:将"var"添加到语言中的目的是什么?

c# linq coding-style var

14
推荐指数
2
解决办法
3644
查看次数

在Visual Studio中配置"应用程序验证程序"

我看到我可以在Visual Studio 2008中启动应用程序验证程序Debug->Start With Application Verifier.但是,app验证程序文档显示了一系列可以配置的选项,如果它的UI是从Visual Studio单独启动的.我无法想象如何在Visual Studio中设置这些选项.

它变成了一种权衡.如果我从"调试"菜单启动应用程序验证程序,我会从应用程序验证程序获取有关执行中的缺陷的IDE集成响应.如果我在外部启动应用程序验证程序并配置特定选项,它仍然会在我的Visual Studio调试期间导致"停止",但是我没有得到IDE集成应用程序验证程序输出.

有谁知道如何访问app验证程序的配置功能,并且仍然具有VS完全集成的体验?

c++ debugging application-verifier visual-studio

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

无法删除Webmatrix网站

从"我的网站"视图中,我逐个选择了几个我想要删除的网站.我为每个人提供了"删除网站"或"删除网站和内容"的选项.我选择了"删除网站和内容".

然而,当我之后选择重新创建其中一个已删除的网页时,Webmatrix说"已经存在名为'MySite'的网站 - 您需要输入不同的网站名称."

我需要做些什么才能使WebMatrix真正删除网站?为什么不首先完全删除我要求的网站?

webmatrix

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

每个服务端点的HttpClient实例化

在实例化HttpClient时,一个常见的建议是:

但是,根据这个链接我看到评论,我认为这意味着另一个规则:

HttpClient类实例充当发送HTTP请求的会话.HttpClient实例是应用于该实例执行的所有请求的设置集合.此外,每个HttpClient实例都使用自己的连接池,将其请求与其他HttpClient实例执行的请求隔离开来.

这让我想知道我是否应该为每个与之交互的服务端点创建一个HttpClient实例.通过"服务端点",我的意思是一个不同的基地址.以下各项将是一个独特的"服务端点":

当然,如果我打算使用HttpClient的"BaseAddress"属性,并且如果我正在处理并发调用,那么我将需要每个"service-endpoint"有一个HttpClient实例.

但是,HttpClient允许我明确指定一个绝对地址:

HttpClient client = new HttpClient(...);

client.PostAsJsonAsync("http://foo.net/api/Message/", ...);
client.PostAsJsonAsync("http://bar.com/api/Message/", ...);
client.PostAsJsonAsync("http://wow.gov/api/Message/", ...);
client.PostAsJsonAsync("http://now.com/api/Message/", ...);
client.PostAsJsonAsync("http://mom.org/api/Message/", ...);
client.PostAsJsonAsync("http://dog.com/api/Message/", ...);
Run Code Online (Sandbox Code Playgroud)

上面的代码工作,它正是我想要的当前应用程序我正在构建.但是唠叨的问题仍然存在......如果我将一个HttpClient用于我的应用程序与之通信的所有服务端点,那么我做错了什么?

有没有理由我真的需要上面引文中提到的"连接池隔离"?

.net c# asp.net-web-api dotnet-httpclient

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