如何将 .deps 和 .runtimeconfig 文件包含为项目依赖项?
How do I include .deps and .runtimeconfig files as project dependencies?
Visual Studio 为我的项目创建 运行 exe 所需的两个文件和 .exe:一个 deps.json 和一个 runtimeconfig.json。我的解决方案中的第二个项目将第一个项目作为项目参考,但是这两个文件没有被复制到我的第二个项目的输出目录中。我怎么能告诉 Visual Studio 它应该将这些文件复制到第二个项目的输出目录中,因为引用的项目依赖于它们?
我的第一个项目的输出目录:
Foo.exe
Foo.deps.json
Foo.runtimeconfig.json
我的第二个项目的输出目录:
Bar.exe
Foo.exe
Should contain deps and runtimeconfig files, but does not
我找到的解决方案是手动编辑我的 .csproj 文件以添加以下目标:
<Target Name="AddRuntimeDependenciesToContent"
Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'"
BeforeTargets="GetCopyToOutputDirectoryItems"
DependsOnTargets="GenerateBuildDependencyFile;
GenerateBuildRuntimeConfigurationFiles">
<ItemGroup>
<ContentWithTargetPath Include="$(ProjectDepsFilePath)"
Condition="'$(GenerateDependencyFile)' == 'true'"
CopyToOutputDirectory="PreserveNewest"
TargetPath="$(ProjectDepsFileName)" />
<ContentWithTargetPath Include="$(ProjectRuntimeConfigFilePath)"
Condition="'$(GenerateRuntimeConfigurationFiles)' == 'true'"
CopyToOutputDirectory="PreserveNewest"
TargetPath="$(ProjectRuntimeConfigFileName)" />
</ItemGroup>
</Target>
此解决方案来自 https://github.com/dotnet/sdk/issues/1675#issuecomment-658779827。
该线程中还发布了其他一些类似的解决方案,但这是唯一对我有用的解决方案。其他人要么不一致地将文件复制到我的第二个项目,要么导致第一个项目由于试图访问尚不存在的文件而无法构建。与此的主要区别在于包含正确的“BeforeTargets”属性(可能还有“DependsOnTargets”),控制在构建过程中的哪个点包含文件。
Visual Studio 为我的项目创建 运行 exe 所需的两个文件和 .exe:一个 deps.json 和一个 runtimeconfig.json。我的解决方案中的第二个项目将第一个项目作为项目参考,但是这两个文件没有被复制到我的第二个项目的输出目录中。我怎么能告诉 Visual Studio 它应该将这些文件复制到第二个项目的输出目录中,因为引用的项目依赖于它们?
我的第一个项目的输出目录:
Foo.exe
Foo.deps.json
Foo.runtimeconfig.json
我的第二个项目的输出目录:
Bar.exe
Foo.exe
Should contain deps and runtimeconfig files, but does not
我找到的解决方案是手动编辑我的 .csproj 文件以添加以下目标:
<Target Name="AddRuntimeDependenciesToContent"
Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'"
BeforeTargets="GetCopyToOutputDirectoryItems"
DependsOnTargets="GenerateBuildDependencyFile;
GenerateBuildRuntimeConfigurationFiles">
<ItemGroup>
<ContentWithTargetPath Include="$(ProjectDepsFilePath)"
Condition="'$(GenerateDependencyFile)' == 'true'"
CopyToOutputDirectory="PreserveNewest"
TargetPath="$(ProjectDepsFileName)" />
<ContentWithTargetPath Include="$(ProjectRuntimeConfigFilePath)"
Condition="'$(GenerateRuntimeConfigurationFiles)' == 'true'"
CopyToOutputDirectory="PreserveNewest"
TargetPath="$(ProjectRuntimeConfigFileName)" />
</ItemGroup>
</Target>
此解决方案来自 https://github.com/dotnet/sdk/issues/1675#issuecomment-658779827。
该线程中还发布了其他一些类似的解决方案,但这是唯一对我有用的解决方案。其他人要么不一致地将文件复制到我的第二个项目,要么导致第一个项目由于试图访问尚不存在的文件而无法构建。与此的主要区别在于包含正确的“BeforeTargets”属性(可能还有“DependsOnTargets”),控制在构建过程中的哪个点包含文件。