使用Cmake将一个CSharp项目的引用添加到另一个CSharp项目并使用MSBuild构建

时间:2017-06-05 19:58:51

标签: c# msbuild cmake csproj

我是Cmake和MSBuild的新手。我已经阅读了多篇关于在Cmake中链接库的帖子。有一两个人谈论链接项目,但他们主要是关于C ++项目。我的问题是特定于将一个C#项目的引用添加到另一个C#项目,其中两个项目都是使用CMake生成的,并且是同一个.Net解决方案的一部分,并且使用MSBuild在生成后成功构建项目。 我有两个使用cmake生成的C#项目。 Projects的当前文件夹结构是:

ProjA

--- cmake.txt

--- projA.csproj.template

ProjB

--- Cmake.txt

--- projB.csproj.template

Cmake将cmake.txt用于项目,而项目又使用csproj文件生成C#项目ProjectA和Project B. Fyi,C#项目的* .cs文件是使用Swig生成的。我没有详细介绍它生成的* .cs文件是正确的。

项目B具有项目A中所需的类型。因此,我们希望将项目B的参考添加到项目A中。

为了做到这一点,我首先尝试将Project B的引用添加到ProjectA csproj文件中。

<ItemGroup>
  <ProjectReference Include="..\..\FolderB\ProjectB\ProjectB.csproj">
    <Project>{PROJ GUID}</Project>
      <Name>ProjectB</Name>
    </ProjectReference>
</ItemGroup>

我通过打开cmake生成的.Net解决方案并手动构建它来测试更改。变化很好。但是,当我使用cmake生成这些项目然后使用MSbuild构建.Net解决方案和项目时,构建失败。 我得到的构建错误(对于项目A)是:

找不到类型或命名空间名称(您是否缺少using指令或程序集引用?

命名空间中不存在类型或命名空间名称(您是否缺少程序集引用?)

当我打开生成的C#项目并单独构建它时,项目构建得很好,没有任何构建错误。

通过阅读错误,似乎Cmake仍然无法将项目B的引用添加到项目A.所以,接下来除了在ProjectA csproj文件中添加项目B的引用之外,我尝试在CMake中添加ProjectB的引用。项目A的txt。我通过将命令target_link_libraries(ProjectAName "ProjectBName")添加到cmake.txt文件来完成此操作。

我尝试的另一件事是通过include_external_msproject命令(在cmake.txt中)添加对项目A的引用,即:

include_external_msproject(
  ProjectAName 
  ${csprojfileName}
  TYPE "${CS_GUID}"
  ProjectB
)

构建仍然失败。

让我知道这些尝试是否存在任何问题,以及可以进行哪些进一步的更改,以便CMake为项目A生成正确的信息,以便在构建时MSBuild知道项目A引用了项目B.

0 个答案:

没有答案