C# 筛选CopyLocalLockFileAssemblys输出
我将CopyLocalLockFileAssemblys设置为true,并希望筛选输出。因此,我使用了以下代码: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
<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>