14.9.2017에 Windows 업데이트가 설치되었으므로 릴리스 빌드에서 특정 구조체를 만드는 데 문제가 있습니다. 해당 업데이트가 설치되지 않은 컴퓨터에서 컴파일 된 코드가 예상대로 실행됩니다 ("잘못된 시작 : 1.1.1990 ..."). 문제의 업데이트가 설치된 컴퓨터에서 코드가 올바르게 작동하지 않습니다 ("잘못된 시작 : 1.1. 2000 ... "). 이 문제는 버전 4.x부터 모든 .NET Framework 버전에서 발생합니다.Windows 업데이트가 .Net 4.x의 구조체를 손상시킵니다.
class Program
{
static void Main(string[] args)
{
DateTime start1 = new DateTime(1990, 1, 1, 6, 0, 0);
DateTime end1 = new DateTime(2000, 1, 1, 6, 0, 0);
var r2 = new DateTimeRange(start1, end1);
var r3 = new Range<DateTime>(r2.From, r2.To);
Console.WriteLine($"Wrong start: {r3.From}, correct start: {start1}");
Console.ReadLine();
}
}
public struct DateTimeRange
{
private Range<DateTime> m_range;
public DateTimeRange(DateTime from, DateTime to)
{
m_range = new Range<DateTime>(from, to);
}
public DateTime From
{
get { return m_range.From; }
}
public DateTime To
{
get { return m_range.To; }
}
}
public struct Range<T> where T : struct
{
private T m_from;
private T m_to;
public Range(T from, T to)
{
m_from = from;
m_to = to;
}
public T From
{
get { return m_from; }
}
public T To
{
get { return m_to; }
}
}
"잘못됨"을 정의하십시오. 증상/오류가 무엇입니까? – DiskJunky
해당 날짜에 설치된 Windows 업데이트는 무엇입니까? – AKX
프로젝트에서 bin 폴더를 삭제하고 다시 컴파일하십시오. 새 Bin 폴더가 생성됩니다. 컴파일러는 Framework에 대한 종속성을 인식하지 않으므로 컴파일러는 모든 객체를 자동으로 업데이트하지 않습니다. 따라서 저장소를 삭제하면 컴파일러가 프로젝트를 완전히 다시 컴파일해야합니다. – jdweng