【发布时间】:2016-03-18 09:09:17
【问题描述】:
我有一个服务由于使用了 JavascriptSerializer 而发送了错误的 DateTime 数据。我使用 Nuget 将 Newtonsoft 添加到项目中,并利用了它。这是代码中唯一使用它的地方(旧方式,然后是新方式):
374
- var messageString = new JavaScriptSerializer().Serialize(messageDetails);
374
+ var messageString = Newtonsoft.Json.JsonConvert.SerializeObject(messageDetails);
以下是 Team City 构建期间发生的错误:
Consumer\MetricTrackingMQServiceConsumer.cs(374, 49): error CS0122: 'Newtonsoft.Json.JsonConvert' is inaccessible due to its protection level
Consumer\MetricTrackingMQServiceConsumer.cs(374, 61): error CS0117: 'Newtonsoft.Json.JsonConvert' does not contain a definition for 'SerializeObject'
项目在本地编译良好。为什么在 Team City 中失败了?
【问题讨论】:
-
我猜这个 DLL 没有被检入源代码控制。 Visual Studio 插件不会自动尝试将依赖项拉入源代码控制(这是有道理的,它们可能在 Program Files、GAC 或谁知道在哪里,如果 VS 试图签入 Program,那将是一团糟文件夹)
-
几乎可以肯定是这样,谢谢@MatthewMartin