You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用$(SolutionDir)配置ProjectReference时无法加载Logging程序集的问题

问题:使用$(SolutionDir)配置项目引用导致运行时找不到程序集

我通过Directory.Build.props批量给解决方案内项目添加Logging项目引用,配置如下:

<Project>
    <PropertyGroup>
        <TargetFramework>net7.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <LangVersion>preview</LangVersion>
    </PropertyGroup>
    
    <ItemGroup>
        <ProjectReference
                Condition="'$(MSBuildProjectName)' != 'X' And '$(MSBuildProjectName)' != 'Y' And '$(MSBuildProjectName)' != 'Logging'"
                Include="$(SolutionDir)\Libraries\Logging\Logging.csproj"/>
    </ItemGroup>
</Project>

运行解决方案内的控制台应用时,触发以下错误:

System.IO.FileNotFoundException: Could not load file or assembly 'Logging, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.

IDE的自动补全、命名空间导入等功能都正常,手动用相对路径添加引用则能正常运行:

<ProjectReference Include="..\Libraries\Logging\Logging.csproj"/>

问题原因

核心问题是$(SolutionDir)这个MSBuild变量本身就以反斜杠()结尾,而你在引用路径里额外加了一个反斜杠,导致最终生成的路径出现重复的反斜杠(比如C:\MySolution\\Libraries\Logging\Logging.csproj)。

MSBuild在编译阶段能兼容这种格式错误,所以IDE功能、项目编译都正常,但运行时的程序集解析逻辑对路径格式更严格,无法正确识别重复反斜杠的路径,导致找不到输出的Logging.dll。

解决方案

有两种简单的修复方式:

  1. 移除路径中的额外反斜杠
    直接利用$(SolutionDir)自带的结尾反斜杠拼接路径,修改后的ProjectReference配置如下:
<ProjectReference
        Condition="'$(MSBuildProjectName)' != 'X' And '$(MSBuildProjectName)' != 'Y' And '$(MSBuildProjectName)' != 'Logging'"
        Include="$(SolutionDir)Libraries\Logging\Logging.csproj"/>
  1. 改用相对路径结合项目目录变量(可选)
    如果担心SolutionDir的路径问题,也可以用$(MSBuildProjectDirectory)结合相对路径,不过这种方式需要根据项目位置调整相对层级:
<ProjectReference
        Condition="'$(MSBuildProjectName)' != 'X' And '$(MSBuildProjectName)' != 'Y' And '$(MSBuildProjectName)' != 'Logging'"
        Include="$(MSBuildProjectDirectory)\..\Libraries\Logging\Logging.csproj"/>

修改完成后,清理并重新生成整个解决方案,运行控制台应用即可解决程序集找不到的问题。


内容的提问来源于stack exchange,提问作者Mário Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:45:37