Visual studio 2008 Visual Studio 2008中丢失了目标文件 我的解决方案主要是C语言,但是我有一个C++项目,它创建了一个我的C代码调用的DLL。布局如下:

Visual studio 2008 Visual Studio 2008中丢失了目标文件 我的解决方案主要是C语言,但是我有一个C++项目,它创建了一个我的C代码调用的DLL。布局如下:,visual-studio-2008,Visual Studio 2008,[已编辑:有两个级别的间接寻址,这会导致问题] 我们将此解决方案称为MySolution。它有四个项目: MySolution MyCppDll (creates an unmanaged DLL) MyCSharpWrapper (Managed wrapper for the unmanaged DLL) MyCSharpLibrary (Contains classes that access the wrapper) MyCSharpProgram (C

[已编辑:有两个级别的间接寻址,这会导致问题]

我们将此解决方案称为MySolution。它有四个项目:

MySolution MyCppDll (creates an unmanaged DLL) MyCSharpWrapper (Managed wrapper for the unmanaged DLL) MyCSharpLibrary (Contains classes that access the wrapper) MyCSharpProgram (Creates classes from MyCSharpLibrary) 我的解决方案 MyCppDll(创建非托管DLL) MyCSharpWrapper(非托管DLL的托管包装器) MyCSharpLibrary(包含访问包装器的类) MyCSharpProgram(从MyCSharpLibrary创建类) 我已正确设置了依赖项,以便首先编译MyCppDll,然后编译包装器、库和程序。但是,在IDE中构建时,MyCppDll的输出不会复制到MyCSharpLibrary的输出目录

我可以通过为MyCSharpLibrary创建一个构建后步骤,将MyCppDll.dll复制到MyCSharpLibrary\bin\Debug(或\Release)目录来解决这个问题

但在编译MyCSharpProgram时,它会获取与包装器和库关联的文件,但不会获取DLL。同样,我可以创建一个构建后步骤来完成它,但这并不理想,原因有两个

真正的解决方案有几十个项目,其中许多引用了MyCSharpLibrary。正如您可以想象的那样,为每一步创建后期构建步骤都是令人厌烦且容易出错的。每次我添加引用该程序集的新项目时,我都必须创建另一个后期构建步骤

这应该是没有必要的。当我从命令行构建该解决方案时,DLL将按预期从MyCSharpLibrary目录复制。也就是说,从IDE生成的目录MyCSharpProgram\bin\Debug包含MyCSharpProgram.exe、MyCSharpLibrary.dll、MyCSharpWrapper.dll(以及相关的.pdb文件)。但是,如果我从命令行生成(使用MSBuild),目录将包含所有这些内容和MyCppDll.dll

还有其他人遇到过这个问题吗?我正在使用VisualStudio2008,尚未升级到SP1


[编辑-问题似乎是,除非有从程序项目到包装器项目的直接引用,否则不会复制文件。也就是说,如果我在MyCSharpProgram项目中添加对MyCSharpWrapper的引用,则会复制DLL。同样,这只发生在IDE中。在从“命令行”

< p>在使用Bug时,我们遇到VisualStudio和混合C++和C类项目的问题。然后我们切换到只使用重建并工作。您可能从命令行重建并在IDE中构建。


顺便说一句,这个引用是否需要存在,因为项目在某种程度上依赖于它?

Stefan说得对。引用是不可传递的。您需要添加引用。Downvoter?通常提供解释性评论。