我加Fody ProperyChanged两个项目在我的解决方案。 包还原在该解决方案使。 然而,TFS构建服务失败,出现以下错误建筑:
WindowsUI.csproj(443):导入项目 “SolutionDir \工具\ Fody \ Fody.targets” 没有被发现。 确认在声明的路径是正确的,并且该文件存在于磁盘上。
该文件夹确实不存在。 我可以检查它到源代码控制,很明显。 然而,它应该不会被NuGet包填充还原? 还是我误解了什么NuGet包还原呢?
我加Fody ProperyChanged两个项目在我的解决方案。 包还原在该解决方案使。 然而,TFS构建服务失败,出现以下错误建筑:
WindowsUI.csproj(443):导入项目 “SolutionDir \工具\ Fody \ Fody.targets” 没有被发现。 确认在声明的路径是正确的,并且该文件存在于磁盘上。
该文件夹确实不存在。 我可以检查它到源代码控制,很明显。 然而,它应该不会被NuGet包填充还原? 还是我误解了什么NuGet包还原呢?
由于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
我遇到了类似的问题,试图获得一个解决方案的基础上的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>
更新:这个答案现在只适用于之前的版本1.13.0.0。
在该文件中SolutionDir\Tools\Fody
无法通过的NuGet部署,需要签入源代码控制
您正在运行到,我没有当我试图在船NuGet包构建更新了同样的问题。 问题是,NuGet包还原在构建过程中被调用。 正因为如此,如果NuGet包还原恢复是进口.targets文件,它是恢复为时已晚。 由当时的文件写入到磁盘<Import
元素已评估并跳过由于不是磁盘上的文件。
我发现最好的办法是建一个项目来调用你的包恢复。 为了顺利完成这一出我自己的SlowCheetah的NuGet安装的NuGet包时,包我创建了一个packageRestore.proj
在作为的.csproj / .vbproj同一导演的文件。 然后,用户可以构建这个项目文件,然后将的.sln /的.csproj / .vbproj。 通过这样做的NuGet包还原,然后构建过程拉开序幕。
如果您有兴趣使用我的packageRestore.proj
我可以重新因子SlowCheetah NuGet包的一部分到自己和你的NuGet包可以依赖于一个。 让我知道,如果你有兴趣在这。