- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们有一个 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
的模块中目录。
我需要做什么,才能在 Linux 上使用 Mono 构建这个项目?我最好的猜测是 .csproj
文件丢失了某些东西,所以他们找不到所需的 .dll
.
我看过类似的问题,但他们基本上说“只需添加一个引用”,而没有解释如何在 Linux 上执行此操作。我没有“解决方案资源管理器”或任何东西。
我应该补充一点,我没有使用 modevelop,这都是控制台和使用 vi
编辑的文件.
我还想补充一点,对 .csproj
的任何更改或其他文件仍应与 Windows 兼容。
编辑
我不知道它是否有帮助,但我注意到所需的版本 XmlDiffPatch
也是available on NuGet .我们的 C# 项目目前根本不使用 NuGet,但我当然愿意接受建议 - 只要它只需要在 Linux 上编辑文件,并且在 Windows 开发人员提取我的提交后它会自动在 Visual Studio 中工作。
最佳答案
您可以将 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 | Optional string. | Relative or absolute path of the assembly.
关于.net - 如何为 xbuild 添加缺少的程序集引用? (单声道/Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35632123/
我是一名优秀的程序员,十分优秀!