为何添加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