【发布时间】:2016-02-25 15:52:59
【问题描述】:
我们有一个 C# 项目,它在 Windows 上的 Visual Studio 和 TeamCity 中构建得非常好。
我尝试在 Linux 上这样构建它,使用 Mono 的 xbuild:
MONO_IOMAP=case xbuild BuildAll.sln
构建失败,出现 2 个警告和 7 个错误,均与 XmlDiffPatch 有关。
警告:
/usr/lib/mono/4.5/Microsoft.Common.targets: warning : Reference 'XmlDiffPatch, Version=1.0.8.28, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' not resolved
错误:
***REDACTED***: error CS0234: The type or namespace name `XmlDiffPatch' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
有几个.cs 文件与
using Microsoft.XmlDiffPatch;
我在.csproj 文件中有这个:
<ItemGroup>
<Reference Include="nunit.framework, Version=2.6.2.12296, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Security" />
<Reference Include="System.Xml" />
<Reference Include="XmlDiffPatch, Version=1.0.8.28, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</ItemGroup>
...
<ItemGroup>
<None Include="lib\XmlDiffPatch.dll" />
</ItemGroup>
我已确认文件lib\XmlDiffPatch.dll 确实存在。
该项目有几个模块(抱歉,我不知道确切的 .NET 用语,我来自 Java/Maven 背景)并且警告/错误仅发生在具有 lib 目录的模块中。
我需要做什么才能使这个项目使用 Mono 在 Linux 上构建?
我的最佳猜测是.csproj 文件缺少某些东西,因此他们找不到所需的.dll。
我查看了类似的问题,但他们基本上说“只需添加参考”,而没有解释如何在 Linux 上执行此操作。我没有“解决方案浏览器”或任何东西。
我应该补充一点,我没有使用 monodevelop,这是所有控制台和使用 vi 编辑文件。
我还想补充一点,对 .csproj 或其他文件的任何更改仍应与 Windows 兼容。
编辑
我不知道它是否有帮助,但我注意到XmlDiffPatch 的所需版本也是available on NuGet。我们的 C# 项目目前根本不使用 NuGet,但我当然愿意接受建议 - 只要它只需要在 Linux 上编辑文件,并且在 Windows 开发人员拉出我的提交后它会自动在 Visual Studio 中工作。
【问题讨论】:
标签: .net linux mono nuget xbuild