强制控制台命令的文化

时间:2010-01-04 15:23:06

标签: command-line msbuild

我想使用特定的文化(en-US)执行msbuild脚本,因为其中一个任务是尝试使用aDateTime.ToShortDateString()作为参数调用Web服务,并且我当前的文化与服务器的不兼容(英文)格式。

如何在不更改区域设置的情况下执行此操作?

2 个答案:

答案 0 :(得分:2)

我最终创建了一个特定的任务来改变当前的文化:

public class ChangeCulture : Task
{
    [Required]
    public string Culture { get; set; }

    public override bool Execute()
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(Culture);

        return true;
    }
}

答案 1 :(得分:-1)

如果您想要更改整个应用程序的文化,那么您可以在应用程序启动时设置文化:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);

您可以阅读有关在MSDN上进行设置的信息。

考虑到你的例子,这可能是矫枉过正的。如果您尝试仅将ToShortDateString()更改为en-US,则可能有更简单的方法。您可以改为使用ToString()方法并传入特定格式,例如:

aDateTime.ToString("MM/dd/yyyy");

更具体地说,您可以将预定义的文化信息与System.Globalization一起使用,如下所示:

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
string datePattern = culture.DateTimeFormat.ShortDatePattern;
string shortDate = aDateTime.ToString(datePattern);