我能够在我的电脑上编译一个C#项目但我的同事在尝试在他的电脑上编译同一个项目时有编译错误。尽管我们正在使用不同的VS版本(VS12和VS15),但.NET版本和项目配置是相同的。
项目在VS15上编译,但在VS12中没编译。
两台PC都是W7和.NET 4.5.2(我的同事已经为这个项目更新了他的版本)。
构建错误来自结构:
public struct CommandMessage
{
public string RawMsg { get; set; }
public string MsgId { get; set; }
public string MsgBody { get; set; }
public string[] MsgParams { get; set; }
public CommandMessage(string rawMsg, string msgId,
string msgBody, string[] msgParams)
{
RawMsg = rawMsg;
MsgId = msgId;
MsgBody = msgBody;
MsgParams = msgParams;
}
public override string ToString()
{
return "CommandMessage<<" + MsgId + ">> : <" + MsgBody + ">";
}
}
这就是错误:
CS0843:自动实现属性的备用字段 CommandMessage.RawMsg&#39;必须在控制权返回之前完全分配 呼叫者,召集者。考虑从构造函数中调用默认构造函数 初始化程序。
对struct中的每个属性重复出错(RawMsg,MsgId,MsgBody,MsgParams)
错误很容易修复,只需在构造函数上添加: this()
:
public CommandMessage(string rawMsg, string msgId,
string msgBody, string[] msgParams) : this ()
{
...
}
但是我无法找到为什么这个错误会出现在一台PC而不是另一台PC中?有些想法?