Build error while transitioning between branches: Your project is not referencing the “.NETFramework,Version=v4.7.2” framework

前端 未结 8 1180
暗喜
暗喜 2021-02-01 12:40

We\'re using Git and we have a solution which is targeting the full net framework. A couple of days ago, I\'ve started migrating the solution to .net core. Unfortunately, someth

相关标签:
8条回答
  • 2021-02-01 13:34

    I deleted the obj and bin folders and rebuilt the Project. Visual Studio automatically created the "dll" files to be used again. It worked for me.

    0 讨论(0)
  • 2021-02-01 13:39

    Fix this by automatically deleting project.assets.json for non-Core project(s) via a custom Visual Studio Build Event.

    Update (6/13/2020) It turned out deleting project.assets.json caused squiggy lines to show because Intellisense needed the references from the file. So an even better fix is to use a Pre-build event to only delete the file if the project is not .Net Core.

    This is identified by $(TargetFramework) ---> "netcoreapp3.1" on my computer. Your installed framework might show a different identifier so update the script accordingly (see the text in your build Output window generated by the ECHO on line 2). Note: This can be an empty string on certain .Net Framework version(s) which shouldn't be an issue. We're also only comparing the first 7 characters to ignore the version to avoid having to update the script if/when the version changes.

    SET _tgt=$(TargetFramework)
    ECHO %_tgt%
    IF NOT "%_tgt:~0,7%" == "netcore" (
        cd $(ProjectDir)\obj
        DEL project.assets.json
    )
    

    ==== Update (6/13/2020) ends here. Original answer kept below to provide context. ====

    We narrowed down the problem to a single file: project.assets.json in the {Your project}/obj folder. It's a file created by a .Net Core project but it does not get deleted by Visual Studio after switching to a .Net Framework project causing the issue mentioned by OP.

    The solution is to remove this file but, rather than having to delete it manually every time we need to switch projects, we created a post-build event in Visual Studio to remove it after each successful Core build (your Core projects won't build if you run the script before the build, obviously). You can customize the script to delete whatever files/folders you deem to be problematic but our issue was limited to that single file.

    cd $(ProjectDir)\obj
    del project.assets.json
    

    Note: You will need to delete the offending artifact(s) manually once if it already exists since the post-build event will only run after a successful build.

    0 讨论(0)
提交回复
热议问题