ASP.NET Core 2.0 Razor Pages项目运行报错:无法找到程序集编译库位置
解决ASP.NET Core 2.0 Razor Pages运行时找不到内部程序集的问题
我之前也碰到过这个一模一样的问题!ASP.NET Core 2.0在处理本地内部程序集引用的时候确实有一些容易踩的坑,尤其是Razor Pages项目——编译通过但运行时找不到依赖,大概率是程序集没有被正确复制到输出目录,或者Razor视图编译时无法定位到它。下面是我亲测有效的几种解决方案:
1. 优先使用项目引用而非直接引用DLL
如果你的内部程序集是同一个解决方案里的项目,千万不要直接引用生成的.dll文件,改成项目引用:
- 在Visual Studio里右键你的Razor Pages项目 → 添加 → 项目引用 → 勾选内部程序集对应的项目。
- 这样MSBuild会自动处理依赖复制,确保编译和运行时都能找到程序集。
如果必须引用外部DLL(比如不是同一解决方案的),确保在.csproj里正确配置:
<ItemGroup> <Reference Include="YourAssemblyName"> <HintPath>..\path\to\YourAssemblyName.dll</HintPath> <!-- 确保复制到输出目录 --> <Private>True</Private> <CopyLocal>True</CopyLocal> </Reference> </ItemGroup>
2. 清理缓存并重建解决方案
有时候Visual Studio的缓存会搞鬼,导致程序集没有被正确复制:
- 先手动删除项目的
bin和obj文件夹(这两个文件夹里的缓存经常出问题)。 - 然后在Visual Studio里点击菜单 → 生成 → 清理解决方案,接着再重新生成。
- 或者用命令行执行:
dotnet clean dotnet build
3. 配置运行时标识符(RuntimeIdentifiers)
ASP.NET Core 2.0对跨平台运行时的依赖解析有时候需要明确指定运行时标识符,在你的.csproj的<PropertyGroup>里添加:
<RuntimeIdentifiers>win7-x64;win-x64</RuntimeIdentifiers>
根据你的操作系统选择对应的标识符,比如Linux的话可以加linux-x64,然后重新生成项目。
4. 确保Razor编译能访问到程序集
Razor Pages的视图编译是单独的过程,有时候会找不到主项目复制的程序集,可以在.csproj里添加以下配置,强制将引用的程序集复制到发布目录的refs文件夹:
<PropertyGroup> <CopyRefAssembliesToPublishDirectory>true</CopyRefAssembliesToPublishDirectory> </PropertyGroup>
5. 检查输出目录是否存在目标程序集
最后可以手动验证一下:找到项目输出目录(比如bin\Debug\netcoreapp2.0),看看里面有没有你的<assemblyname>.dll和对应的.pdb文件。如果没有,说明复制过程出了问题,回到第一步检查引用配置。
内容的提问来源于stack exchange,提问作者DomBurf
相关产品推荐
相关产品推荐

