none
Biztalk 2016 target framework RRS feed

  • Question

  • Hi 

    I am trying to migrate biztalk projects from 2013 to BT 2016.

    When I opened the solution in VS 2015 and tried to build each project and I noticed that target framework for C# library project , pipeline component project  is .Net framework 4.5.

    Do I need to change the Target framework to 4.6

    when I tried to build pipeline project I got warning stating 

    There was a mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference

    how to resolve this? Please help me out.

    I am new to Biztalk and IT world


    When you see answers and helpful posts, please click Vote As Helpful , Propose As Answer , and/or Mark As Answer

    Wednesday, September 6, 2017 1:33 PM

All replies

  • Yes, 4.6 is required for BizTalk 2016.
    Wednesday, September 6, 2017 2:16 PM
  • So, keep in mind, Platform target and Target framework are different things.

    First, make sure everything is set to MSIL for the Platform target.  A mismatch should only happen when referencing and x64 Assembly from an x86.

    Also, references are downward compatible, meaning you can reference a .Net 4.5 Assembly from a 4.6 Assembly.  (You might be able to go both ways on this one...it's not as absolute as it used to be ;)

    Wednesday, September 6, 2017 2:19 PM
    Moderator
  • Framework for BTS 2016 can be 4.7 with latest CUs applied (at least CU2)
    https://msdn.microsoft.com/en-us/library/mt763885.aspx

    /Peter

    Wednesday, September 6, 2017 2:40 PM
  • A couple of things will clear you out of this spaghetti:

    • On Configuration Manager, select Debug solution configuration, select Any CPU on active solution platform.

    • For all projects on the grid, make sure configuration is set to Debug and Platform is set to Any CPU, check Build and Deploy ( unless its not a project you want to deploy).

    • Change active solution configuration to Release, make sure all projects are set to Release and Platform to Any CPU. Check boxes as above.

    • For each project in the solution, go to the Project Properties page and under Application, select Target Framework 4.6.

    • Clean and rebuild. 



    My Technet Articles

    If you like this or another reply, vote it up!
    If you think this or another reply answers the original question, mark it or propose it as an answer.


    Mauricio Feijo
    www.mauriciofeijo.com




    Wednesday, September 6, 2017 3:07 PM
  • A couple of things will clear you out of this spaghetti:

    • On Configuration Manager, select Debug solution configuration, select Any CPU on active solution platform.

    • For all projects on the grid, make sure configuration is set to Debug and Platform is set to Any CPU, check Build and Deploy ( unless its not a project you want to deploy).

    • Change active solution configuration to Release, make sure all projects are set to Release and Platform to Any CPU. Check boxes as above.

    • For each project in the solution, go to the Project Properties page and under Application, select Target Framework 4.6.

    • Clean and rebuild. 



    My Technet Articles

    If you like this or another reply, vote it up!
    If you think this or another reply answers the original question, mark it or propose it as an answer.


    Mauricio Feijo
    www.mauriciofeijo.com




    Thank you Mauricio,

    I will try this and will let you know.


    When you see answers and helpful posts, please click Vote As Helpful , Propose As Answer , and/or Mark As Answer

    Thursday, September 7, 2017 7:08 AM
  • Thank you Maurcio,

    It worked I could deploy the solution now in the new Envoirement(new BT 2016 server)

    But one thing is really confusing me, the assembly was deployed to the Biztalk Application 1 application as I did not set the Application name in Deployment tab.

    But when I checked the old biztalk solution projects, Application name for the BT project is left blank, how then that solution(or projects) where deployed then to the perticular application.

    :-( Am I missing something


    When you see answers and helpful posts, please click Vote As Helpful , Propose As Answer , and/or Mark As Answer


    • Edited by har Thursday, September 7, 2017 8:13 AM
    Thursday, September 7, 2017 8:12 AM
  • I assume "Biztalk Application 1" is marked as default application?
    It's standard behaviour


    /Peter


    Thursday, September 7, 2017 8:19 AM
  • I assume "Biztalk Application 1" is marked as default application?
    It's standard behaviour


    /Peter


    I dont want it to deploy to the default applicaion.

    Raather want it to deploy it to the application in old server(BT 2013 server)

    Should I use BTDF(is it compatible with BT 2016)?

    Or what should I do for now?


    When you see answers and helpful posts, please click Vote As Helpful , Propose As Answer , and/or Mark As Answer

    Thursday, September 7, 2017 8:27 AM
  • Change application name to your desired target in Visual Studio before deployment or change the default applicaton to the application you are using

    Powershell Script to change Application in btproj.user files

    $files = gci -Recurse -Filter *.btproj.user
    $applicationName = "DocumentTypes"
    foreach($file in $files)
    {
        "Checking file " + $file.Name
        $doc = [xml](gc $file.FullName)
        $appNames = $doc.SelectNodes("//*[local-name() = 'ApplicationName']")
        foreach($appName in $appNames)
        {
            if($appname -eq "")
            {
                "Setting application name to $applicationName"
                $appname.InnerText = $applicationName
            }
        }
        $doc.Save($file.FullName)
    }
    
    "Done..."
    /Peter

    Thursday, September 7, 2017 8:39 AM
  • any other way than that?

    I have few questions?

    Can I migrate from 2013 to 2016 and deploy bt solution in 2016 using BTDF(is that the best practice)?

    if thats the case 1. I will have to download BTDF .exe and have to run on Biztalk 2016 lab server

                             2. and then deploy solution using BTDF add-in in VS 2015

    or should I manually paste the Application name in Deployment Tab


    • Edited by har Thursday, September 7, 2017 10:12 AM
    Thursday, September 7, 2017 9:56 AM
  • You need to set the deployment target on the project if you don't want to use/set default application

    I'll assume the same goes for BTDF
    Please crete new threads for use of BTDF as it is a complex framework

    Thanks /Peter

    Thursday, September 7, 2017 10:15 AM
  • You need to set the deployment target on the project if you don't want to use/set default application

    how to set this?


    When you see answers and helpful posts, please click Vote As Helpful , Propose As Answer , and/or Mark As Answer

    Thursday, September 7, 2017 10:24 AM
  • Hi,

    Microsoft Recently announce BizTalk Migration Tool. With this you can actually migrate from BizTalk 2013 to 2016. its basically picks up all your applications from BizTalk 2013 and you can import them to BizTalk 2016 environment.

    No involvement of code is required.

    its a kind of Lift and shift model.

    Please find the link below

    BizTalk Migration Tool


    Sujith

    Thursday, September 7, 2017 11:17 AM
  • Please note this comment from the BizTalk Team

    ... we recommend that you take the applications through Visual Studio to build them when you’re jumping more than 2 versions.

    Thanks /Peter



    • Edited by Peter Lykkegaard Thursday, September 7, 2017 11:42 AM Added comment from article
    Thursday, September 7, 2017 11:39 AM
  • Thank you Maurcio,

    It worked I could deploy the solution now in the new Envoirement(new BT 2016 server)

    But one thing is really confusing me, the assembly was deployed to the Biztalk Application 1 application as I did not set the Application name in Deployment tab.

    But when I checked the old biztalk solution projects, Application name for the BT project is left blank, how then that solution(or projects) where deployed then to the perticular application.

    :-( Am I missing something


    When you see answers and helpful posts, please click Vote As Helpful , Propose As Answer , and/or Mark As Answer


    Hi harc,

    Sorry for being away. Blame Hurricane Irma... :)

    I am glad I was able to help.

    About the application it deploys to, there are a couple of tricky things to think about:

    • The BizTalk Application Name is stored in the .suo file. So if you check it in to git, for example, and then check it out on another box, the suo is likely in your .gitignore, and the suo will not be fetched, thus the Target BizTalk Application will need to be reconfigured.

    • The BizTalk Application Name is specific to each Solution Configuration. So there is one for Debug and one for Release.

    Do this: Select your BizTalk Project in the solution, then hit Alt+Enter. This should bring up the project properties window.

    On the tree on the left, select "Deployment".

    On the top, under "BizTalk Group", the first line is Application Name. Fill in that for each configuration on the configuration drop down immediately above it and save it.

    If you need to save that in git ( if that is what you are using ), edit your .gitignore file and comment out the suo filename extension.


    My Technet Articles

    If you like this or another reply, vote it up!
    If you think this or another reply answers the original question, mark it or propose it as an answer.


    Mauricio Feijo
    www.mauriciofeijo.com




    Wednesday, September 13, 2017 1:35 PM