Search code examples
asp.netasp.net-mvcvisual-studioentity-frameworkmsdeploy

Upon one-click publish: Exception in executing publishing: An item with the same key has already been added


I realize that a billion people have asked about this error, but I've looked at all of them. Mine seems different. I'm not getting any sort of source code error, no stack trace, no helpful information whatsoever, because the error occurs immediately upon clicking "Publish" on my MVC.NET project. It's just a dialog box, and that's all it says. Nothing else happens.

Things that might be related:

  • I'm using Team Foundation. I had some trouble with it (user error) for a while, but I just got everything back to the way it should be (I think).
  • At one point I used an EDMX thing. I deleted in favor of making my table models from scratch.
  • I can't find my publishing profile anymore, nor can I figure out how to make a new one. I thought it was supposed to be in a ~/PublishProfiles folder. It's not there.

I know I haven't given a lot of information, but I don't even know where to begin. I'll be happy to provide anything else upon request. Thank you.

EDIT
I should note that it builds and runs perfectly on the localhost server.

EDIT 2
I rolled back to the oldest version on source control and it worked. I guess I can painstakingly go through each changeset. Also, I did find the PublishProfiles folder. I verified that no changes have been made to the profile.


Solution

  • I was wrong about there not being any changes to the publishing profile. Here is what happened.

    I set up a code-first Entities context called, say, MyDBContext. In my publishing profile myprofile.pubxml, Some code automatically gets inserted like this:

    <PublishDatabaseSettings>
      <Objects xmlns="">
        <ObjectGroup Name="MyDBContext" ......
    <MSDeployParameterValue Include="$(DeployParameterPrefix)MyDBContext-Web.config Connection String" />
    

    Then, I decide to try the EDMX stuff. But I save my old structure just in case. Now the File looks like this:

    <PublishDatabaseSettings>
      <Objects xmlns="">
        <ObjectGroup Name="MyDBContext" Order="1" ......
        <ObjectGroup Name="myEntities" Order="2" ......
    <MSDeployParameterValue Include="$(DeployParameterPrefix)MyDBContext-Web.config Connection String" />
    <MSDeployParameterValue Include="$(DeployParameterPrefix)myEntities-Web.config Connection String" />
    

    But then, I decide to ditch the EDMX stuff. Somehow, though, instead of removing the second set of entries in the .pubxml file, this happened:

    <PublishDatabaseSettings>
      <Objects xmlns="">
        <ObjectGroup Name="MyDBContext" Order="1" ......
        <ObjectGroup Name="MyDBContext" Order="2" ......
    <MSDeployParameterValue Include="$(DeployParameterPrefix)MyDBContext-Web.config Connection String" />
    <MSDeployParameterValue Include="$(DeployParameterPrefix)MyDBContext-Web.config Connection String" />
    

    Voila. Second set removed, and I'm good to go.