gpt4 book ai didi

visual-studio - 从 msbuild 中的 nuget 导入 props 或目标

转载 作者:行者123 更新时间:2023-12-02 16:40:39 24 4
gpt4 key购买 nike

我正在使用 PackageReference 从 nuget 导入 props 文件。自 msbuild /t:restore 以来,使用命令行处理此问题不再是问题。可以解析项目文件并忽略丢失的文件。 msbuild /t:build然后有有效的路径可以通过恢复的方式进行工作。

但是,Visual Studio 无法加载任何包含此类导入的项目,因为它确定该项目是无效的 csproj。如何让 Visual Studio 忽略此导入以进行加载?

请注意,如果我要使用 msbuild /t:restore首先从命令行(以便生成 XXX.csproj.nuget.g.propsXXX.csproj.nuget.g.targets),Visual Studio 可以正常加载项目。我想避免这种依赖。

导入代码段:

<ItemGroup>
<PackageReference Include="ScopedManifest.Task" GeneratePathProperty="true" />
</ItemGroup>
<Import Project="$(Pkg_ScopedManifest_Task)\include\ScopedManifestTask.Props" />

在 VS 中加载项目时出错:

error : The imported project "D:\include\ScopedManifestTask.Props" was not found. Confirm that the expression in the Import declaration "\include\ScopedManifestTask.Props" is correct, and that the file exists on disk. D:\work\test-build\repo\src\Manifest\Manifest.csproj

最佳答案

使用条件。当您将包含 Prop 或目标的 NuGet 包添加到 Visual Studio 中的项目时,也是采用这种方式。

<Import Project="$(Pkg_ScopedManifest_Task)\include\ScopedManifestTask.Props" Condition="Exists('$(Pkg_ScopedManifest_Task)\include\ScopedManifestTask.Props')" />

Nuget 还添加了此内容,因此您会在缺少导入时收到构建错误:

<Project>
...
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(Pkg_ScopedManifest_Task)\include\ScopedManifestTask.Props')" Text="$([System.String]::Format('$(ErrorText)', '$(Pkg_ScopedManifest_Task)\include\ScopedManifestTask.Props'))" />
</Target>
...
</Project>

关于visual-studio - 从 msbuild 中的 nuget 导入 props 或目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61762943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com