Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C++/CLI CS0246:类型或命名空间名称';包装纸';找不到_C#_Visual Studio 2008_Build_C++ Cli - Fatal编程技术网

C# C++/CLI CS0246:类型或命名空间名称';包装纸';找不到

C# C++/CLI CS0246:类型或命名空间名称';包装纸';找不到,c#,visual-studio-2008,build,c++-cli,C#,Visual Studio 2008,Build,C++ Cli,我遇到了一个似乎与之相同的问题 我有一个VS 2008解决方案,其中包括: (为简单起见,名称已更改) DLL A:一个本地C++,业务逻辑DLL DLL B:命名空间为“wrapper”的DLL A的C++/CLI包装器 EXE:一个C#WinForms GUI EXE项目,它(引用DLL B) 当我生成EXE时,VS给我一个错误: error CS0246: The type or namespace name 'Wrapper' could not be found (are you

我遇到了一个似乎与之相同的问题

我有一个VS 2008解决方案,其中包括: (为简单起见,名称已更改)

  • DLL A:一个本地C++,业务逻辑DLL
  • DLL B:命名空间为“wrapper”的DLL A的C++/CLI包装器
  • EXE:一个C#WinForms GUI EXE项目,它(引用DLL B)
当我生成EXE时,VS给我一个错误:

error CS0246: The type or namespace name 'Wrapper' could not be found (are you missing a using directive or an assembly reference?)
然而:

  • 没有报告其他错误或警告
  • EXE项目中的所有引用似乎都已正确解析
  • DLL A和DLL B都是在没有错误或警告的情况下生成的
  • 我可以在对象浏览器中遍历“包装器”命名空间而不会出现问题
第一个相关问题提到了“编译器符号的重复定义”,但我不确定在这个意义上应该寻找什么


有什么好办法吗?

我想我已经知道了

更多背景:在构建之前,整个解决方案都是使用CMake创建的。我使用CMake对csproj文件进行一些编辑,以便EXE将其指向正确的引用,包括DLL B

每当我运行CMake时,csproj文件的ProjectReference节点中DLL B的静态定义GUID与输出DLL B的vcproj的新生成GUID不同步。此GUID不匹配导致DLL B在生成时不被引用,即使它显示在引用列表中,并且没有相关的警告或错误

我发现这一点的方式是通过查看构建输出。在对csc.exe的调用中,DLL B没有“/reference”条目


现在我需要找到一种保持这些guid同步的方法

您是否从EXE项目添加了对DLL B项目的引用?(你说所有引用都可以解析,但你没有列举“所有”。@DavidYaw我想出来了-请看我的答案。@Kohnaz那么你是如何保持这些GUID的同步的呢。你能发布更新后的答案吗?@幸运的是,我在一个相关的问题()中记录了这一点,因为我对这一点的记忆相当模糊。如今,CMake+.NET可能有更好的支持选项。