NuGet包还原不取指构建目标组件(工具)(NuGet Package Restore does n

2019-08-06 19:36发布

我加Fody ProperyChanged两个项目在我的解决方案。 包还原在该解决方案使。 然而,TFS构建服务失败,出现以下错误建筑:

WindowsUI.csproj(443):导入项目 “SolutionDir \工具\ Fody \ Fody.targets” 没有被发现。 确认在声明的路径是正确的,并且该文件存在于磁盘上。

该文件夹确实不存在。 我可以检查它到源代码控制,很明显。 然而,它应该不会被NuGet包填充还原? 还是我误解了什么NuGet包还原呢?

Answer 1:

由于1.13.0.0版(发布2013年3月23日)Fody是一个100%的NuGet部署工具,因此它会与包工作的恢复。

https://nuget.org/packages/Fody/

当您安装Fody的NuGet这将出现https://github.com/Fody/Fody/blob/master/NuGet/readme.txt



Answer 2:

我遇到了类似的问题,试图获得一个解决方案的基础上的Visual Studio在线。 问题是,包项目建设之前恢复,但在此之前,从包中的项目文件和目标夹杂物(仍有待恢复)已经解释。

这里描述使用之前勾编译:

http://sedodream.com/2010/10/22/MSBuildExtendingTheSolutionBuild.aspx

在您的before.solutionname.sln.targets文件把这样的事情,迫使所有的包,即使第一个项目开工前要恢复:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0"
     DefaultTargets="Build"
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<Target Name="BeforeBuild" BeforeTargets="Build">
 <Message Text="Restoring all nuget packages before build" Importance="high">
 </Message>
<Exec Command=".\.nuget\NuGet.exe restore YourSolution.sln" />
</Target>
</Project>

如果你有外部包源配置它们在你的nuget.config文件,该文件也应该在.nuget文件夹中。 例如:

<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <packageSources>
    <add key="NuGet official package source" value="https://nuget.org/api/v2/" />
    <add key="YourSource" value="http://yoursource.somewhere.net/nuget" />
  </packageSources>
  <packageRestore>
    <!-- Allow NuGet to download missing packages -->
    <add key="enabled" value="True" />

    <!-- Automatically check for missing packages during build in Visual Studio -->
    <add key="automatic" value="True" />
  </packageRestore>
</configuration>


Answer 3:

更新:这个答案现在只适用于之前的版本1.13.0.0。

在该文件中SolutionDir\Tools\Fody无法通过的NuGet部署,需要签入源代码控制



Answer 4:

您正在运行到,我没有当我试图在船NuGet包构建更新了同样的问题。 问题是,NuGet包还原构建过程被调用。 正因为如此,如果NuGet包还原恢复是进口.targets文件,它是恢复为时已晚。 由当时的文件写入到磁盘<Import元素已评估并跳过由于不是磁盘上的文件。

我发现最好的办法是建一个项目来调用你的包恢复。 为了顺利完成这一出我自己的SlowCheetah的NuGet安装的NuGet包时,包我创建了一个packageRestore.proj在作为的.csproj / .vbproj同一导演的文件。 然后,用户可以构建这个项目文件,然后将的.sln /的.csproj / .vbproj。 通过这样做的NuGet包还原,然后构建过程拉开序幕。

如果您有兴趣使用我的packageRestore.proj我可以重新因子SlowCheetah NuGet包的一部分到自己和你的NuGet包可以依赖于一个。 让我知道,如果你有兴趣在这。



文章来源: NuGet Package Restore does not fetch Build Target Assemblies (Tools)