首页 > 解决方案 > 如何避免将引用的项目配置复制到 bin 文件夹

问题描述

早上好,亲爱的社区。

我想询问有关复制引用项目的配置文件的问题。我一直试图解决我的问题将近两天,但没有取得任何结果。

问题是我有 MyFinance.Repositories 类库,其中包含其 MyFinance.Repositories.appsetting.json 文件。它的“复制到输出目录”属性的值为“始终复制”。

在此处输入图像描述

另外,我有 MyFinance.Api 项目,它引用了 MyFinance.Repositories。 我的财务.Api

当我构建 MyFinance.Api 时,MyFinance.Repositories.appsetting.json 被复制到 MyFinance.Api\bin\Debug\netcoreapp3.1 文件夹。在此处输入图像描述

交易是我想阻止它。我发现最好的假设是使用带有 AllowedRelatedFileExtensions 属性的 ResolveAssemblyReference 任务。

MyFinance.Api.scproj 的片段:

<ItemGroup>
    <ProjectReference Include="..\MyFinance.Repositories\MyFinance.Repositories.csproj">
      <Targets>
        <ResolveAssemblyReference AllowedRelatedFileExtensions=".xml;.pdb"></ResolveAssemblyReference>
      </Targets>
    </ProjectReference>
</ItemGroup>

但它不起作用。所以,请帮助我)提前谢谢你。

PS MyFinance.Repositories.appsetting.json 的属性“复制到输出目录”必须是“始终复制”。PPS 在构建后删除此文件也是无效的。

标签: c#.netvisual-studiomsbuildcsproj

解决方案


实际上,它MyFinance.Repositories.appsetting.json是一个内容资源 json 文件,而不是运行时输出文件。所以AllowedRelatedFileExtensionsandAllowedReferenceRelatedFileExtensions属性没有处理资源文件的工作。

属性节点只能处理生成的运行时、输出文件(pdb、dev.json、xml、...),而不是更新资源文件的副本。

您可以使用 txt 资源文件和带有<AllowedReferenceRelatedFileExtensions>*.txt</AllowedReferenceRelatedFileExtensions>的输出pdb文件对其进行测试<AllowedReferenceRelatedFileExtensions>*.pdb</AllowedReferenceRelatedFileExtensions>,然后您会发现不同之处。

解决方案

所以最好的解决方案是删除文件,在MyFinance.Api.csproj文件下添加这些:

<Target Name="DeleteFile" AfterTargets="_CopyOutOfDateSourceItemsToOutputDirectory">
    <Delete Files="$(TargetDir)MyFinance.Repositories.appsettings.json"></Delete>
</Target>

推荐阅读