【发布时间】:2020-06-25 15:02:15
【问题描述】:
我得到了一个只包含带有常量的静态类的程序集
public static class C {
public const int Value = 123;
}
我在不同的应用程序中使用这个程序集,它标有CopyLocal = false,并且没有部署。
这项工作适用于 netframework 应用程序,但适用于 netcoreapp 我收到一条错误消息,提示找不到程序集。
编译后的代码中没有引用程序集(使用ildasm 验证),但.deps.json 文件中仍有引用。
我是否需要使用核心应用程序部署程序集,或者是否有将其从 .deps.json 文件中排除的设置?
(我的大多数网络框架应用程序都只是小型可执行文件,因此似乎没有必要在部署中包含数兆字节的未使用程序集。核心应用程序从一开始就很大且多文件,所以没关系)
编辑:发现问题。
该程序集实际上没有CopyLocal = false。它使用 .targets 文件在构建时将其删除
<Target Name="PreventConstantsCopyLocal" AfterTargets="ResolveReferences">
<ItemGroup>
<ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)"
Condition="'%(ReferenceCopyLocalPaths.NuGetPackageId)' == 'MyConstants'" />
</ItemGroup>
</Target>
我只是添加了一个额外的条件
And ('%(MSBuildRuntimeType)' == '' Or '%(MSBuildRuntimeType)' == 'Full')
所以常量被复制到核心构建中的输出。
【问题讨论】:
标签: .net-core deployment dependencies