加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

当依赖项将.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包恢复,项目也会加载.如果启用了自动包恢复,则第一次构建尝试应该清除丢失的目标问题,但如果没有,则将进行一次手动包还原.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读