其他分享
首页 > 其他分享> > 为何添加Newtonsoft.Json后Team City出现编译错误?

为何添加Newtonsoft.Json后Team City出现编译错误?

作者:互联网

由于使用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中失败?

解决方法:

当您使用NuGet包含依赖项时,我强烈建议您避免这些类型的问题.

>确保您对Newtonsoft DLL的引用指向NuGet软件包文件夹.
>从源代码管理中排除NuGet软件包.
>在解决方案构建步骤之前添加“ Nuget Installer”类型的构建步骤,以还原该解决方案引用的所有NuGet软件包.

这具有许多优点,但最重要的是考虑到您当前的问题,它可以确保解决方案引用的DLL版本可用且位于正确的位置.

标签:teamcity,json,c
来源: https://codeday.me/bug/20191121/2053290.html