小编The*_*Sky的帖子

是否可以更改NuGet包的位置?

对于我的大多数项目,我都有以下约定:

/src
    /Solution.sln
    /SolutionFolder
        /Project1
        /Project2
        /etc..
/lib
    /Moq
        moq.dll
        license.txt
    /Yui-Compressor
        yui.compressor.dll
/tools
    /ILMerge
        ilmerge.exe
Run Code Online (Sandbox Code Playgroud)

你会注意到,我没有保持外部库的源文件夹.我也对使用NuGet非常感兴趣,但不希望在源文件夹中使用这些外部库.NuGet是否有设置来更改所有包加载到的目录?

.net visual-studio nuget nuget-package

278
推荐指数
14
解决办法
18万
查看次数

如何优雅地处理时区

我的网站托管在与使用该应用程序的用户不同的时区.除此之外,用户还可以拥有特定的时区.我想知道其他SO用户和应用程序如何处理这个问题?最明显的部分是在DB内部,日期/时间以UTC格式存储.在服务器上时,所有日期/时间都应以UTC格式处理.但是,我看到了我要克服的三个问题:

  1. 以UTC格式获取当前时间(轻松解决DateTime.UtcNow).

  2. 从数据库中提取日期/时间并将其显示给用户.可能有很多调用在不同视图上打印日期.我在考虑可以解决这个问题的视图和控制器之间的某个层.或者有自定义扩展方法DateTime(见下文).主要的缺点是在视图中使用日期时间的每个位置,必须调用扩展方法!

    这也会增加使用类似的东西的难度JsonResult.你不能再轻易打电话了Json(myEnumerable),它必须是Json(myEnumerable.Select(transformAllDates)).也许AutoMapper可以在这种情况下提供帮助?

  3. 从用户获取输入(本地到UTC).例如,使用日期发布表单需要将日期转换为UTC.首先想到的是创建一个自定义ModelBinder.

这是我想在视图中使用的扩展:

public static class DateTimeExtensions
{
    public static DateTime UtcToLocal(this DateTime source, 
        TimeZoneInfo localTimeZone)
    {
        return TimeZoneInfo.ConvertTimeFromUtc(source, localTimeZone);
    }

    public static DateTime LocalToUtc(this DateTime source, 
        TimeZoneInfo localTimeZone)
    {
        source = DateTime.SpecifyKind(source, DateTimeKind.Unspecified);
        return TimeZoneInfo.ConvertTimeToUtc(source, localTimeZone);
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑到很多应用程序现在都是基于云的,服务器的本地时间可能与预期的时区差别很大,我认为处理时区会是如此常见.

以前优雅地解决了吗?有什么我想念的吗?非常感谢您的想法和想法.

编辑:为了清除一些混乱,我想添加更多细节.现在的问题不是如何在数据库中存储UTC时间,而是更多关于从UTC-> Local和Local-> UTC的过程.正如@Max Zerbini所指出的那样,将UTC-> Local代码放在视图中显然很聪明,但是DateTimeExtensions真的使用了答案吗?当从用户那里获得输入时,接受日期作为用户的本地时间(因为这是JS将使用的)然后使用a ModelBinder转换为UTC是否有意义?用户的时区存储在数据库中,可以轻松检索.

.net c# asp.net-mvc timezone asp.net-mvc-3

135
推荐指数
4
解决办法
6万
查看次数

如何使用属性的依赖注入?

在我正在创建的MVC项目中,我有以下内容RequirePermissionAttribute可以放在需要特定权限的任何操作上(本例中已简化):

public class RequirePermissionAttribute : ActionFilterAttribute, IAuthorizationFilter
{
    public Operation Permissions { get; set; }

    public RequirePermissionAttribute() { }

    public RequirePermissionAttribute(Operation permissions)
    {
        this.Permissions = permissions;
    }

    public bool AuthorizeCore(HttpContextBase httpContext)
    {
        IAuthorizationService authServ = new ASPNETAuthorizationService();
        return authServ.Authorize(httpContext);
    }

    public void OnAuthorization(AuthorizationContext filterContext)
    {
        Enforce.ArgNotNull(filterContext);

        if (this.AuthorizeCore(filterContext.HttpContext))
        {
            // code snipped.
        }
        else
        {
            // code snipped.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以问题显然是我的authorize属性依赖于ASPNETAuthorizationService我创建的属性.我不能去构造函数方式,因为属性是编译时检查的.

有一点需要提及的是,我正在使用自己制作的小IoC,并且它还没有支持属性注入(尚未).当然,如果我确实去了房产注入路线,我必须增加对它的支持(我必须做一些研究).

将某些东西注入属性类的最佳方法是什么?

.net c# asp.net-mvc dependency-injection

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

ASP.NET MVC - 角色提供者的替代方案?

我试图避免使用角色提供者和成员资格提供者,因为在我看来它过于笨拙,因此我正在尝试制作我自己的"版本",它不那么笨拙,更易于管理/灵活.现在是我的问题..角色提供者有替代方案吗?(我知道我可以做自定义角色提供者,会员提供者等)

通过更易于管理/灵活,我的意思是我只能使用Roles静态类而不是直接实现到与数据库上下文交互的服务层,而是我必须使用具有自己的数据库上下文的Roles静态类等,表名也很糟糕..

提前致谢.

asp.net authentication asp.net-mvc authorization asp.net-membership

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

正则表达式在引号之外选择逗号

我不太确定这是否可行,所以我转向你.

我想找到一个正则表达式,它将挑选掉所有引号集之外的逗号.

例如:

'foo' => 'bar',
'foofoo' => 'bar,bar'
Run Code Online (Sandbox Code Playgroud)

这将在第1行中选出单个逗号 'bar',

我真的不关心单引号和双引号.

有没有人有任何想法?我觉得这应该可以用readaheads,但我的正则表达式太弱了.

regex quotes

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

如何以编程方式获取会话cookie名称?

ASP.NET中会话ID的默认cookie名称是ASP.NET_SessionId.也可以将此名称更改为其他类似名称<sessionState cookieName="FooBar" />.

是否有成员可以轻松访问此名称FormsAuthentication.FormsCookieName

c# asp.net

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

我怎么能在红宝石中编码"生日快乐乔什"

有人可以帮我弄这个吗?我正在烤蛋糕,我想要红宝石的代码说"生日快乐Josh"的结冰.

有人能提出一些想法吗?Josh是我的兄弟,是一个狂热的程序员.

我真的很感激 :)

ruby

26
推荐指数
2
解决办法
3924
查看次数

ASP.NET编译器抱怨与MiniProfiler不匹配的框架版本

我有一个MVC3项目,我从VS2010升级到VS2012.该项目也有参考MiniProfiler.我们的应用程序在VS2012中编译并运行良好,没有任何警告/错误.使用IIS Express运行时,两个程序集都可以正常加载 但是,在使用ASP.NET编译器工具时,我收到以下警告:

Microsoft(R)ASP.NET编译工具版本4.0.30319.17929预编译ASP.NET应用程序的实用程序版权所有(C)Microsoft Corporation.版权所有.

(0):警告:以下程序集依赖于高于目标的.NET Framework版本,并且可能在运行时导致失败时无法正确加载:MiniProfiler,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = b44f9351044011a3.依赖项为:System.Data.Linq,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089.您应该确保依赖程序集对于目标框架是正确的,或者确保要处理的目标框架是从属程序集的目标框架.

我们没有明确的参考System.Data.Linq.直到VS2012更新,我们没有任何错误.该MiniProfiler版本确实以.NET 4.0为目标(我们的应用程序也是如此).可能导致此警告的原因是什么?

.net asp.net asp.net-mvc binding mvc-mini-profiler

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

为什么Math.Round/Floor/Ceiling不返回long或int?

每次我使用Math.Round/Floor/Ceiling我总是施放int(或者long如果必要的话).double如果它总是返回一个整数,为什么它们会返回.

.net c#

22
推荐指数
2
解决办法
8815
查看次数

19
推荐指数
2
解决办法
938
查看次数