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

按Fody插件开发文档构建项目时提示未找到织入器的问题

Fody插件构建错误:未找到Weaver程序集

我已遵循Fody插件开发指南进行开发,但构建项目时触发错误:

FodyPackaging: No weaver found at ..\Morris.AutoInject.Fody\bin\Debug\netstandard2.0\Morris.AutoInject.dll. Morris.AutoInject should have a Project Dependency on Morris.AutoInject.Fody, and Morris.AutoInject.Fody should target 'netstandard2.0'.

项目中两个关键csproj文件内容如下:

Morris.AutoInject.csproj

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <LangVersion>latest</LangVersion>
        <Nullable>enable</Nullable>
        <PackageId>$(MSBuildProjectName)</PackageId>
        <Title>AutoInject</Title>
        <Description>A reflection-free + convention-driven registration library for dependency injection.</Description>
    </PropertyGroup>

    <ItemGroup>
        <ProjectReference Include="..\Morris.AutoInject.SourceGenerators\Morris.AutoInject.SourceGenerators.csproj">
            <ReferenceOutputAssembly>False</ReferenceOutputAssembly>
        </ProjectReference>
        <None Include="..\..\..\Images\logo-small.png">
            <Pack>True</Pack>
            <PackagePath>\</PackagePath>
        </None>
        <None Include="..\..\..\README.md">
            <Pack>True</Pack>
            <PackagePath>\</PackagePath>
        </None>
        <None Include="..\Morris.AutoInject.SourceGenerators\bin\$(Configuration)\netstandard2.0\Morris.AutoInject.SourceGenerators.dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false" />
    </ItemGroup>

    <ItemGroup>
        <PackageReference Include="Fody" Version="6.9.1" PrivateAssets="None"/>
        <PackageReference Include="FodyPackaging" Version="6.9.1" PrivateAssets="All" />
    </ItemGroup>

</Project>

Morris.AutoInject.Fody.csproj

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
        <LangVersion>latest</LangVersion>
        <Nullable>enable</Nullable>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="FodyHelpers" Version="6.9.1" />
    </ItemGroup>

</Project>

解决方案

错误提示已明确核心问题:主项目Morris.AutoInject缺少对Weaver项目Morris.AutoInject.Fody的项目依赖,按以下步骤修复:

  1. 在Morris.AutoInject.csproj的项目引用节点中,添加对Morris.AutoInject.Fody的引用:
<ItemGroup>
    <!-- 保留原有引用,新增以下内容 -->
    <ProjectReference Include="..\Morris.AutoInject.Fody\Morris.AutoInject.Fody.csproj">
        <ReferenceOutputAssembly>False</ReferenceOutputAssembly>
    </ProjectReference>
</ItemGroup>

设置<ReferenceOutputAssembly>False</ReferenceOutputAssembly>是为了避免主项目直接引用Weaver程序集,仅保留构建依赖关系,让FodyPackaging能正确定位Weaver输出文件。

  1. 清理并重新构建解决方案
    删除所有项目的bin和obj目录,再执行完整构建,确保Morris.AutoInject.Fody项目先编译完成并输出到指定路径。

  2. 验证程序集名称
    确认Morris.AutoInject.Fody项目的输出程序集名称为Morris.AutoInject.Fody.dll(默认与项目名一致,无需额外修改),FodyPackaging会自动识别该命名格式的Weaver程序集。

内容的提问来源于stack exchange,提问作者Peter Morris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:34:51