Visual studio 2017 update 1 and 2 crash when readyrolltargetsPath has changed to support VSTS

Hi,

Ever since I changed the ReadyRollTargetsPath, I am unable to use deploy or even build the project, because visual studio crashes. When I change it back it works again. I succefully setup the flow as explained in https://documentation.red-gate.com/display/RR1/Build+components, but unfortunally local deployment doesn't work anymore.

I used this

--> old
<!--<ReadyRollTargetsPath>$(AppDataPath)\Microsoft\VisualStudio\12.0Exp\Extensions\ReadyRoll\ReadyRoll SQL Server Database Projects\1.0\ReadyRoll.Data.Schema.SSDT.targets</ReadyRollTargetsPath>-->

--> new
<ReadyRollTargetsPath Condition="Exists('$(MSBuildThisFileDirectory)..\packages')">$([System.IO.Directory]::GetDirectories('$(MSBuildThisFileDirectory)..\packages', 'ReadyRoll.MSBuild.*')[0])\tools\ReadyRoll.Data.Schema.SSDT.targets</ReadyRollTargetsPath>

I'm using readyroll1.13 trial edition on windows 8 running in Administrator mode.
Tagged:

Comments

  • From the documentation:
    The above ReadyRollTargetsPath string assumes that your solution file (.sln) is in the parent folder of the ReadyRoll database project .sqlproj file. If the solution file is not in the parent folder, then you will need to modify the relative path in the above string as appropriate (that is the part that contains the sub-string "..\packages").

    If this isn't the cause of the problem, please send us more details of how Visual Studio crashes (possibly with a screenshot), and the "rrlog.txt" file from your Temp folder to readyroll@red-gate.com
    Adam Bowden,
    Software Engineer, RedGate Software
  • @AdamB & @Hans_ter_Wal I can confirm a similar issue. I have followed the change for VSTS for the <readyrolltargetspath... and everything was working fine until I just did the most recent update of ReadyRoll Core extension and I was unable to build the project anymore with an error telling me "To enable ReadyRoll, follow the instructions in the ReadyRoll window". I was on latest software on the dev environment across the board, however the solution was to update the NuGet package for ReadyRoll.MSBuild. After doing so everything returned to normal. Unfortunately, I confirm the extension update appears to not have been backward compatible with the previous NuGet version. It caused a hiccup for a few us on multiple dev machines but we are checking in the version change to NuGet and letting the team know.
  • TheRealNingTheRealNing Posts: 1 New member
    I can confirm a similar issue. We have developers using the ReadyRoll Core extension and others without, plus the build server of course. So we use the NuGet package and the extension in a number of cases.
    Update just the extension and ReadyRoll breaks on the build target. Update just the NuGet and it breaks again. Get the combination right on all machines to fix it. This is regular pain.

    Has anyone found a way to work with this other than a) never updating ReadyRoll or b) abandoning ReadyRoll? (The latter is becoming increasingly attractive to me). Perhaps a better condition for the <ReadyRollTargetsPath> than recommended in the Product documentation?
  • Hi all,

    Apologies for the inconvenience cause by this issue, the problem should have been resolved in ReadyRoll 1.14. If VS is still crashing during build, if you could please post the version of the ReadyRoll.MSBuild NuGet package (which can be found in the output of your build), plus the version of the ReadyRoll extension itself, that will help us investigate the combinations of installed components further.

    Please also ensure that NuGet has cleaned up any obsolete package versions (e.g. prior to 1.14) from the SolutionDir\Packages folder, as these may continue to cause conflicts.

    Finally, to avoid the issue of packages conflicting, you can include the BuildingInsideVisualStudio flag as part of the <ReadyRollTargetsPath> element:
    <ReadyRollTargetsPath Condition="$(BuildingInsideVisualStudio) != 'True' and Exists('$(MSBuildThisFileDirectory)..\packages')">$([System.IO.Directory]::GetDirectories('$(MSBuildThisFileDirectory)..\packages', 'ReadyRoll.MSBuild.*')[0])\tools\ReadyRoll.Data.Schema.SSDT.targets</ReadyRollTargetsPath>
    

    This will ensure that the ReadyRoll.MSBuild package is only used when building on your Continuous Integration server (or otherwise outside of the IDE).
    Daniel Nolan
    Product Manager
    Redgate Software
Sign In or Register to comment.