C# 元数据文件';。dll';找不到

C# 元数据文件';。dll';找不到,c#,.net,wpf,visual-studio-2008,c#-3.0,C#,.net,Wpf,Visual Studio 2008,C# 3.0,我正在从事一个WPF,C#3.0项目,我遇到了以下错误: Error 1 Metadata file 'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug \BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools \VersionManagementSystem\VersionManagementSystem\CSC VersionManageme

我正在从事一个WPF,C#3.0项目,我遇到了以下错误:

Error 1 Metadata file
'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug
\BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools
\VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem
以下是我引用usercontrols的方式:

xmlns:vms="clr-namespace:VersionManagementSystem"
<vms:SignOffProjectListing Margin="5"/>
xmlns:vms=“clr命名空间:版本管理系统”
它发生在每次失败的构建之后。我获得编译解决方案的唯一方法是注释掉所有的用户控件并重新构建项目,然后取消注释用户控件,一切正常

我已经检查了构建顺序和依赖项配置

如您所见,它似乎截断了DLL文件的绝对路径。。。我已经读到有一个长度错误。这是一个可能的问题吗


这非常烦人,而且必须进行注释、构建和取消注释,构建变得非常烦人。

根据错误消息,我认为文件路径没有被截断。这似乎是不正确的。如果我阅读的消息正确,它似乎是在寻找DLL文件在

WORK=-\Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug\BusinessLogicLayer.dll


这不是有效的路径。是否可能在生成过程中将宏定义设置为无效值?

我也遇到了这个问题。首先,您必须手动构建您的DLL项目,通过右键单击,构建。然后它就可以工作了。

我也遇到了同样的问题。Visual Studio未生成正在引用的项目

书面指示:
  • 在解决方案上单击鼠标右键,然后单击“属性”
  • 单击左侧的配置
  • 确保选中了无法找到的项目的“构建”下的复选框。如果已经选中,取消选中,点击apply并再次选中复选框
  • (可选)必须在解决方案属性的发布和调试模式下执行此操作
  • 屏幕截图说明:
    • 他们说一幅画抵得上千言万语。单击GIF进行放大,希望可以很容易地看到:

    对我来说,它试图在用于包含项目的路径中查找DLL,但我们已将其移动到新目录。解决方案有正确的项目路径,但VisualStudio不知何故一直在旧位置查找

    解决方案:重命名每个有问题的项目-只需添加一个字符或任何东西-然后将其重命名回其原始名称


    这必须在Visual Studio中重置某种类型的全局缓存,因为这会清除此问题和一些类似的问题,而清理之类的事情则不会。几年后回到这一点,此问题很可能与Windows最大路径限制有关:


    在我的例子中,问题是我手动删除了一个标记为“丢失”的非编译文件。一旦我删除了对现在丢失的文件的引用并重新编译,一切都很好。

    在较新版本的Visual Studio中仍然会发生这种情况(我刚刚在VisualStudio2013上遇到过这种情况):

    另一种尝试是关闭Visual Studio并删除
    .sln
    文件旁边的
    .suo
    文件。(下次
    保存所有内容时(或退出Visual Studio时),将重新生成该文件)

    在另一台机器上向解决方案添加新项目,然后将修订内容拉入时,我遇到了这个问题,但在其他情况下,
    .suo
    文件也可能损坏,并导致非常奇怪的Visual Studio行为,因此删除它是我经常尝试的事情之一

    请注意,删除
    .suo
    文件将重置解决方案的启动项目


    关于
    .suo
    文件的更多信息是。

    好吧,我的答案不仅仅是所有解决方案的摘要,它还提供了更多内容

    第(1)节:

    在通用解决方案中:

    我有四个此类错误(“找不到元数据文件”),还有一个错误是“无法打开源文件(“未指定的错误”)

    我试图消除“找不到元数据文件”错误。为此,我阅读了许多帖子、博客等,发现这些解决方案可能是有效的(总结如下):

  • 重新启动Visual Studio并再次尝试生成

  • 转到“解决方案资源管理器”。右键单击解决方案。转到属性。转到“配置管理器”。检查是否选中了“构建”下的复选框。如果其中任何一个或全部未选中,请检查它们并再次尝试构建

  • 如果上述解决方案不起作用,则按照上述步骤2中提到的顺序进行操作,即使选中了所有复选框,也要取消选中它们,再次选中并尝试重新构建

  • 构建顺序和项目依赖关系:

    转到“解决方案资源管理器”。右键单击解决方案。转到“项目依赖项…”。您将看到两个选项卡:“依赖项”“构建顺序”。此生成顺序是解决方案生成的顺序。检查项目依赖项和生成顺序,以验证依赖于其他项目(如“项目2”)的某个项目(如“项目1”)是否正在尝试在该项目(如“项目2”)之前生成。这可能是错误的原因

  • 检查丢失的.dll的路径:

    检查丢失的.dll的路径。如果路径包含空格或任何其他无效路径字符,请将其删除,然后重试生成

    如果这是原因,则调整构建顺序


  • 第(2)节:

    我的特殊情况:

    我尝试了上面的所有步骤,使用各种排列和组合重新启动VisualStudio几次。但是,这对我没有帮助

    所以,我决定消除遇到的其他错误(“无法打开源文件(“未指定错误”))

    我看到一篇博文:

    我试过了门蒂的步骤
    <ItemGroup>
        <ProjectReference Include="..\..\..\MySiteOld\MySite.Entities\MySite.Entities.csproj">
            <Project>{5b0a347e-cd9a-4746-a3b6-99d6d010a6c2}</Project>
            <Name>Beeyp.Entities</Name>
        </ProjectReference>
    ...
    
    #if DEBUG
        public int SomeProperty { get; set; }
    #endif