Command line 强制执行控制台命令的区域性

Command line 强制执行控制台命令的区域性,command-line,msbuild,Command Line,Msbuild,我希望使用特定区域性(en-US)执行msbuild脚本,因为其中一个任务正在尝试使用aDateTime.ToShortDateString()作为参数调用web服务,并且我的当前区域性与服务器的(英语)格式不兼容 如何在不更改我的区域设置的情况下执行此操作?如果要更改整个应用程序的区域性,则可以在应用程序启动时设置区域性,如下所示: Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false); System.Gl

我希望使用特定区域性(en-US)执行msbuild脚本,因为其中一个任务正在尝试使用aDateTime.ToShortDateString()作为参数调用web服务,并且我的当前区域性与服务器的(英语)格式不兼容


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

如果要更改整个应用程序的区域性,则可以在应用程序启动时设置区域性,如下所示:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
string datePattern = culture.DateTimeFormat.ShortDatePattern;
string shortDate = aDateTime.ToString(datePattern);
public class ChangeCulture : Task
{
    [Required]
    public string Culture { get; set; }

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

        return true;
    }
}
您可以阅读有关设置它的内容

不过,以你的例子来说,这可能是矫枉过正。如果您试图将ToSortDateString()更改为en US,可能有一种更简单的方法。您可以改为使用ToString()方法并以特定格式传递,例如,您可以执行以下操作:

aDateTime.ToString("MM/dd/yyyy");
更具体地说,您可以将预定义的区域性信息与System.Globalization一起使用,如下所示:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
string datePattern = culture.DateTimeFormat.ShortDatePattern;
string shortDate = aDateTime.ToString(datePattern);
public class ChangeCulture : Task
{
    [Required]
    public string Culture { get; set; }

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

        return true;
    }
}

最后,我创建了一个特定的任务来改变当前的文化,如下所示:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
string datePattern = culture.DateTimeFormat.ShortDatePattern;
string shortDate = aDateTime.ToString(datePattern);
public class ChangeCulture : Task
{
    [Required]
    public string Culture { get; set; }

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

        return true;
    }
}
“我的”应用程序是MSBuild,因此无法更改它;)