Triggering one project from another
Hi,
I have a project on GitHub that contain few C# projects with some dependencies among them. In addition, Some of these projects depend the old MSTest which was included up to 2015 and on Coded UI, also of VS2015. However, other projects are not specific to the version of Visual Studio and I want to convert them to .Net Standard. For that I want to move these projects to a new solution in Visual Studio 2017 and make the VS2015 specific projects reference the libraries that are produced by the VS2017 projects. This also means that I need 2 images for the AppVeyor build: one for VS2015 and one for VS2017. I thought of two possible solutions, but got stuck with both:
1. The first solution I thought of was to create 2 AppVeyor projects that use 2 different appveyor.yml files. However, I need the VS2015 build to start only after the VS2017 build has completed, and I also need to access the NuGet packages that the first project produces by the second one.
2. Create one AppVeyor project with 2 images, one of VS2015 and the other of VS2017. However I didn't see if its possible to communicate and to synchronize between the two.
Note: the csproj that uses MSTest V1 is not a mere unit tests project (which if it was I could simply upgrade it to MSTest V2 also), but rather a project that contain utilities for MSTest that I provide to my clients. I do also have another similar project (in the same repo and solution) for MSTest V2, but I keep the old one for backward compatibility and for clients that still use MSTest V1 themselves. For more info visit my repo: https://github.com/arnonax/TestEssentials/
Please advise how can I achieve my goal and build some projects in .Net Standard (VS2017) and others that consume them but also require VS2015 and MSTest V1.
Thanks in advance,
Arnon.
Comments are currently closed for this discussion. You can start a new one.
Keyboard shortcuts
Generic
? | Show this help |
---|---|
ESC | Blurs the current field |
Comment Form
r | Focus the comment reply box |
---|---|
^ + ↩ | Submit the comment |
You can use Command ⌘
instead of Control ^
on Mac
1 Posted by Ilya Finkelshte... on 27 Mar, 2019 05:23 PM
Hi Arnon,
I would suggest the following:
Leave a single solution, but create separate configurations, one containing old MSTest projects and another containing .NET Standard projects. Lets call those configurations
OldMsTest
andNetStandard
for example.Create a build build matrix which will run
OldMsTest
onVisual Studio 2015
andNetStandard
onVisual Studio 2017
. Simplest way to achieve this is used environment variables-based matrix, e.g.Then you need to make
Visual Studio 2015/OldMsTest
job to wait for theVisual Studio 2017/NetStandard
one. We do not have 1st class support for dependencies between jobs, but you can use this script sample. just in this case you need to make 2nd job to wait, not 1st one.I assume that
Visual Studio 2017/NetStandard
will package nuget artifacts andVisual Studio 2015/OldMsTest
will get them from AppVeyor nuget feed. Note that AppVeyor push nuget packages to the feed asynchronously, so whenVisual Studio 2017/NetStandard
job finished, nuget packages can be still in the process of publishing. So there is a very small chance of race condition exist. If you hit it, you can simple add retry tonuget restore
, e.g.appveyor-retry nuget restore
in the configuration specific toVisual Studio 2015/OldMsTest
.To specialize build scenario for build jobs in matrix check this.
Ilya.
Ilya Finkelshteyn closed this discussion on 27 May, 2019 09:01 PM.