gpt4 book ai didi

当依赖项将 .targets 导入添加到 .csproj 时,NuGet 还原失败

转载 作者:行者123 更新时间:2023-12-04 15:14:44 27 4
gpt4 key购买 nike

我最近在使用 NuGet 还原时遇到了一个问题。我添加了一个项目依赖项(在本例中为 PostSharp),然后启用了恢复。我检查了源代码,但没有检查/packages 目录(因为我不需要......对!)。当 TeamCity 或其他开发人员获取源代码并运行 MsBuild 时,他们会收到以下错误:

C:\TeamCity\buildAgent\work\e374975c0264c72e\ProjectName\ProjectName.csproj(70, 3): error MSB4019: The imported project "C:\TeamCity\buildAgent\work\e374975c0264c72e\packages\PostSharp.2.1.5.1\tools\PostSharp.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

问题是,NuGet 尚未运行以恢复/下载 PostSharp 或其 .targets 文件。这对我来说就像一个 NuGet 错误,但想看看其他人是否有同样的问题。

任何人都有这个问题或知道解决方案。是的,我可以检入/packages 目录,但是为什么要使用 NuGet 呢?

最佳答案

另一种方法是修改<Import>有问题的元素,使其成为有条件的,例如:

<Import Project="$(CodeAssassinTargets)" Condition="Exists($(CodeAssassinTargets))" />

这取决于早期 <PropertyGroup> 中定义的新属性。 .我通常在 csproj 文件的顶部添加一个带有其他“全局”标志的标志,例如:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<CodeAssassinTargets>$(SolutionDir)packages\CodeAssassin.ConfigTransform.1.1\tools\CodeAssassin.ConfigTransform.targets</CodeAssassinTargets>
<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>
<UseMsdeployExe>true</UseMsdeployExe>
</PropertyGroup>

然后在适当的目标中,例如 BeforeBuild,给出有用的错误消息:
<Target Name="BeforeBuild">
<Error Text="CodeAssassin.ConfigTransforms target is missing. It needs to exist at $(CodeAssassinTargets) in order to build this project!" Condition="!Exists($(CodeAssassinTargets))" />
</Target>

通过这些修改,即使从未完成 nuget 包还原,项目也会加载。如果启用了自动包恢复,第一次构建尝试应该清除丢失的目标问题,但如果没有,手动包恢复将。

关于当依赖项将 .targets 导入添加到 .csproj 时,NuGet 还原失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8524128/

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