-
Notifications
You must be signed in to change notification settings - Fork 391
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Up to date check needs to work with multi-TFM projects #2487
Comments
Since this is potentially somewhat complex, and since the issue hasn't been raised frequently, I'm moving this to 15.7. @davkean I'm curious what your thoughts on this are since you've thought so much about multi-TFM. The up-to-date checker is tied to a configured project. It doesn't seem correct that an up to date checker would be looking at other configurations. That might suggest that it would be more correct to do it at the CPS level? Or somewhere else? |
See #3060. I think the idea would be to operate on all the "Implicitly active" projects. I agree that it's fine to move to 15.7, as this would only be an issue when you have different inputs between targets, which is rare. |
We only ever build the first TFM's configured project (clearing the TargetFramework property so all TFMs build) - so only the first up-to-date check should run. However, as @Pilchie mentioned it should be grabbing data from all the "implicitly active" configured projects. I'd recommend a service that individually in each implicitly active configuration (similar to what I'm doing in #3423), that the core up-to-date queries to determine the real up-to-dateness. |
I've been hitting this a lot this week as I've been moving the compiler test suite to run on CoreClr. Our setup is to have all of our test projects multi-target netcoreapp2.0 and net46. End up spending a bit of time debugging netcoreapp2.0 failures which locks the files in the output directory. Now if I build then net46 succeeds but netcoreapp2.0 fails due to lock files. Once I stop the debugger and build again nothing happens because the up to date check succeeds. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Be sure to check the case in duplicate issue #4338. |
We discussed this today with CPS and concluded the design is subtly different than it would be for the dependencies node. The distinction is between aggregation across implicitly active configurations of services versus data sources.
Notes about the resulting design:
This work will require changes in both CPS and the .NET Project System. |
This comment has been minimized.
This comment has been minimized.
Here's a workaround when conditionally compiling <ItemGroup Condition=" '$(TargetFramework)' != 'netcoreapp3.0' ">
<!-- Do not compile files -->
<Compile Remove="**/*netcore30*.cs" />
<!-- Still show files in Solution Explorer -->
<None Include="**/*netcore30*.cs" />
<!-- Trigger rebuilds on changing the files -->
<UpToDateCheckInput Include="**/*netcore30*.cs" />
</ItemGroup> |
Right now, we are called with the active configured project, but multi-TFM projects will build multiple configurations.
The text was updated successfully, but these errors were encountered: