C# 筛选CopyLocalLockFileAssemblys输出

C# 筛选CopyLocalLockFileAssemblys输出,c#,visual-studio,.net-core,msbuild,C#,Visual Studio,.net Core,Msbuild,我将CopyLocalLockFileAssemblys设置为true,并希望筛选输出。因此,我使用了以下代码: <Target Name="FilterCopyLocalItems" AfterTargets="ResolveLockFileCopyLocalProjectDeps"> <ItemGroup> <ReferenceCopyLocalPaths Remove="@(Refere

我将CopyLocalLockFileAssemblys设置为true,并希望筛选输出。因此,我使用了以下代码:

  <Target Name="FilterCopyLocalItems" AfterTargets="ResolveLockFileCopyLocalProjectDeps">
    <ItemGroup>
      <ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)" Condition="'%(Filename)' == 'Microsoft.Extensions.DependencyInjection.Abstractions'" />
    </ItemGroup>
  </Target>


但此代码不起作用,如何在输出上放置筛选器?

您的目标是从输出文件夹中删除引用dll

我想知道你的意思是不能执行目标吗

对我来说,我在安装nuget包的NetCore项目中使用了下面的xml代码

除了,当您执行目标时,请不要在您的nuget包的PackageReference下添加
运行时
,它的效果实际上是您的目标
过滤器copylocalItems
的角色。在运行时,删除输出文件夹中相关的
package.dll


因此,您应该删除它以避免重复使用。

您的目标是从输出文件夹中删除引用dll

我想知道你的意思是不能执行目标吗

对我来说,我在安装nuget包的NetCore项目中使用了下面的xml代码

除了,当您执行目标时,请不要在您的nuget包的PackageReference下添加
运行时
,它的效果实际上是您的目标
过滤器copylocalItems
的角色。在运行时,删除输出文件夹中相关的
package.dll


因此,您应该删除它以避免重复使用。

您似乎使用了一个net core项目,并在其中添加了这些节点,以从
bin
输出文件夹中删除
Microsoft.Extensions.DependencyInjection.Abstractions.dll
。所以我只是想知道你所说的
这段代码不起作用是什么意思
?在“.\build\zip.props(2,40)”的后目标属性中列出的目标“ResolveLockFileCopyLocalProjectDeps”在项目中不存在,和将被忽略。似乎您使用了一个net core项目并在其中添加了这些节点,以从
bin
输出文件夹中删除
Microsoft.Extensions.DependencyInjection.Abstractions.dll
。所以我想知道你所说的
这段代码不起作用是什么意思?“.\build\zip.props(2,40)”的后目标属性中列出的目标“ResolveLockFileCopyLocalProjectDeps”在项目中不存在,将被忽略。非常感谢,是的,你做对了,我不会将一些程序集复制到输出文件夹中。为此,我使用了ResolveLockFileCopyLocalProjectDeps来过滤它们,但它不起作用,相反,我使用了ResolvePackageDependenciesForBuild,效果很好。但是,我不打算在“Project.deps”文件中包含这些程序集的加载路径。我设计了一个模块化系统,这个请求的目的是从DefaultAssemblyLoadContext加载一些程序集。我为此创建了一个问题,很抱歉没有获得项目的结构和
csproj
文件,所以我没有注意到它。感谢您与我们分享这一重要信息。另外,请删除
运行时
,其效果与您的目标
FilterCopyCalitems相同。我已经更新了我的答案,因为我们讨论了执行目标而不是模块化系统的问题。因此,我建议您标记此答案,然后在So上打开有关模块化系统问题的新票证。:)非常感谢,是的,您答对了,我不会将一些程序集复制到输出文件夹。为此,我使用了ResolveLockFileCopyLocalProjectDeps来过滤它们,但它不起作用,相反,我使用了ResolvePackageDependenciesForBuild,效果很好。但是,我不打算在“Project.deps”文件中包含这些程序集的加载路径。我设计了一个模块化系统,这个请求的目的是从DefaultAssemblyLoadContext加载一些程序集。我为此创建了一个问题,很抱歉没有获得项目的结构和
csproj
文件,所以我没有注意到它。感谢您与我们分享这一重要信息。另外,请删除
运行时
,其效果与您的目标FilterCopyCalitems相同。我已经更新了我的答案,因为我们讨论了执行目标而不是模块化系统的问题。因此,我建议您可以标记此答案,然后在So上打开有关模块化系统问题的新票据。:)
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>
  
  <Target Name="FilterCopyLocalItems" AfterTargets="ResolveLockFileCopyLocalProjectDeps">
    <ItemGroup>
      <ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)" Condition="'%(Filename)' == 'Microsoft.Extensions.DependencyInjection.Abstractions'" />
    </ItemGroup>
  </Target>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.6" />
    
  </ItemGroup>

</Project>
<Target Name="FilterCopyLocalItems" AfterTargets="ResolvePackageDependenciesForBuild">
        <ItemGroup>
          <ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)" Condition="'%(Filename)' == 'Microsoft.Extensions.DependencyInjection.Abstractions'" />
        </ItemGroup>
      </Target>