当依赖项将.targets导入添加到.csproj时,NuGet Restore失败
发布时间:2020-12-13 20:47:35 所属栏目:百科 来源:网络整理
导读:最近我在NuGet恢复时遇到了一个问题.我添加了项目依赖项(在本例中为PostSharp),然后启用了还原.我检查了源代码,但没有检查/ packages目录(因为我不需要……对吧!).当TeamCity或其他开发人员抓取源并运行MsBuild时,他们会收到以下错误: C:TeamCitybuildAg
最近我在NuGet恢复时遇到了一个问题.我添加了项目依赖项(在本例中为PostSharp),然后启用了还原.我检查了源代码,但没有检查/ packages目录(因为我不需要……对吧!).当TeamCity或其他开发人员抓取源并运行MsBuild时,他们会收到以下错误:
C:TeamCitybuildAgentworke374975c0264c72eProjectNameProjectName.csproj(70,3): error MSB4019: The imported project "C:TeamCitybuildAgentworke374975c0264c72epackagesPostSharp.2.1.5.1toolsPostSharp.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)packagesCodeAssassin.ConfigTransform.1.1toolsCodeAssassin.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包恢复,项目也会加载.如果启用了自动包恢复,则第一次构建尝试应该清除丢失的目标问题,但如果没有,则将进行一次手动包还原. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |