如何为xbuild添加缺少的程序集引用? (单声道/ Linux)的

时间:2016-02-25 15:52:59

标签: .net linux mono nuget xbuild

我们有一个C#项目,可以在Windows和TeamCity中的Visual Studio中很好地构建。

我尝试使用Mono的xbuild

在Linux上构建它
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中工作。

1 个答案:

答案 0 :(得分:6)

您可以向HintPath添加.csproj,这样当MSBuild / xbuild将程序集引用传递给csc / mcs时,就会找到它:

<Reference Include="XmlDiffPatch, Version=1.0.8.28, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" >
 <HintPath>lib\XmlDiffPatch.dll</HintPath>
</Reference>

注意:编辑路径以便找到相对于.csproj所在位置的路径(假设问题中的lib目录)。

https://msdn.microsoft.com/en-us/library/bb629388.aspx

  

HintPath |   可选字符串。 |装配的相对或绝对路径。