使用MimeTypes NuGet的多框架项目:Build成功但Rebuild失败
解决Build成功但Rebuild失败的CS0103错误:MimeTypes不存在于当前上下文
问题根源
你遇到的问题并非Visual Studio Bug,而是两个配置/代码错误共同导致的:
- NuGet包引用的资产配置缺失编译所需项,Rebuild时无法获取程序集
- 代码中引用了错误的命名空间
修复步骤
1. 修正NuGet包引用配置
你的PackageReference中IncludeAssets未包含compile,导致Rebuild(清理所有缓存后重新编译)时编译器无法找到该包的程序集。修改项目文件中的包引用部分:
<ItemGroup> <PackageReference Include="MimeTypes" Version="2.5.2"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>compile; runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup>
2. 修正代码中的命名空间引用
MimeTypes类来自NuGet包的MimeTypes命名空间,而非你项目自身的MimeTypesRebuild。修改Program.cs的using语句:
using MimeTypes; var fileName = "sample.png"; var mimeType = MimeTypes.GetMimeType(fileName); Console.WriteLine($"{fileName} has a MIME type of: {mimeType}"); Console.Read();
原因解释
- Build成功的假象:Build操作可能复用了之前编译缓存中的程序集引用,即使配置错误也能暂时通过。
- Rebuild失败的本质:Rebuild会先清理所有编译缓存,重新从配置中获取依赖,此时缺失
compile资产和错误的命名空间就会暴露,触发CS0103错误。
内容的提问来源于stack exchange,提问作者Ryan Thomas
相关产品推荐
相关产品推荐

