Build succeeds, but publish fails

86,014

Solution 1

In my experience this can happen when files are added/removed from different branches of your source control and an imperfect merge causes the project file structure and the actual file structure to diverge.

This could be one of several options:

  • A file was deleted but the project still references it. Will fail to compile, will fail to publish.
  • A file was added but is not referenced by the project. May compile, depends whether the class/methods are referenced elsewhere in the project/solution. If compiles, will publish.
  • A file was added, but the project merge caused it to appear more than once in the project listing. Will compile, will fail to publish.

The solution is to look at the source control logs and trying to identify the bad merge to the project file for the above issues, then fixing the project file accordingly.

Solution 2

Me also faced same issue, I just removed yellow marked file from visual studio project solution & it worked fine for me.

Solution 3

Exclude the bin (and/or) obj folder from project and publish. This worked for me

Solution 4

I had this issue recently publishing to Azure. I ended up deleting all the files in the bin folder( deleted all files WITHIN visual studio solution explorer under bin folder, but leave the bin folder itself empty) , and rebuilding the project. This seemed to make visual studio happy and azure publish worked. hope this helps

Solution 5

I removed bin & obj folder and also the content of the inetpub/wwwroot/myapp and problem solve

Share:
86,014

Related videos on Youtube

p.wilt
Author by

p.wilt

Updated on December 29, 2021

Comments

  • p.wilt
    p.wilt over 2 years

    Up until two days ago, I was able to use Visual Studio 2010's "Publish Web" option by right clicking on my project and clicking the publish button on the context menu. Now when I try to do the same thing, I get the following output:

    ------ Build started: Project: ELMS, Configuration: Debug Any CPU ------
    Build started 8/1/2011 3:08:03 PM.
    GenerateTargetFrameworkMonikerAttribute:
    Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are
    up-to-date with respect to the input files.
    _CopyOutOfDateSourceItemsToOutputDirectoryAlways:
    Copying file from "C:\SVN\TrakNet\trunk\MTS\lib\Newtonsoft.Json.Net35.dll" to 
      "bin\lib\Newtonsoft.Json.Net35.dll".
    CopyFilesToOutputDirectory:
      LMS -> C:\SVN\TrakNet\trunk\MTS\bin\LMS.dll
    
    Build succeeded.
    
    Time Elapsed 00:00:00.04
    ------ Publish started: Project: LMS, Configuration: Debug Any CPU ------
    Object reference not set to an instance of an object.
    ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
    ========== Publish: 0 succeeded, 1 failed, 0 skipped ==========
    

    This is while attempting to publish to localhost (for debugging purposes)

    Here are the settings of the publish profile that I'm using:

    Publish Method: Web Deploy
    Service URL: localhost
    Site/application: default web site/ELMS
    [x] Mark as IIS application on destination
    [x] Leave extra files on destination (do not delete)
    

    I have already attempted:

    - Cleaning/rebuilding the project
    - Deleting the bin folder of the project
    - Running reg_iis.exe -i
    - Reinstalling VS2010
    

    but nothing I've changed has fixed the error.

    Any insight into what might be causing the issue would be greatly appreciated :)

    EDIT:

    The problem actually resolved itself as of my last reboot. I must have rebooted 6-7 times since the problem first manifested itself, but this time no Object Reference message. Here's the log from the build/publish now:

    ------ Build started: Project: LMS, Configuration: Debug Any CPU ------
    Build started 8/3/2011 9:10:12 AM.
    GenerateTargetFrameworkMonikerAttribute:
    Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
    _CopyOutOfDateSourceItemsToOutputDirectoryAlways:
      Copying file from "C:\SVN\TrakNet\trunk\MTS\lib\Newtonsoft.Json.Net35.dll" to "bin\lib\Newtonsoft.Json.Net35.dll".
    CopyFilesToOutputDirectory:
      LMS -> C:\SVN\TrakNet\trunk\MTS\bin\LMS.dll
    
    Build succeeded.
    
    Time Elapsed 00:00:00.04
    ------ Publish started: Project: LMS, Configuration: Debug Any CPU ------
    Gather all files from Project items @(IntermediateAssembly). Adding:
    bin\LMS.dll to bin\LMS.dll
    bin\LMS.pdb to bin\LMS.pdb
    Gather all files from Project items @(Content). Adding:
    Global.asax;lib\Newtonsoft.Json.Net35.dll;MtsSchemas\MtsSchema.xml;Web.config
    Gather all files from Project output (IntermediateSatelliteAssembliesWithTargetPath).
    Adding:
    Gather all files from Project items
    @(ReferenceCopyLocalPaths,ReferenceComWrappersToCopyLocal,ResolvedIsolatedComModules,_DeploymentLooseManifestFile,NativeReferenceFile).
    Gather all files from Project items @(AllExtraReferenceFiles). Adding:
    Gather all files from Project items
    @(_SourceItemsToCopyToOutputDirectoryAlways,_SourceItemsToCopyToOutputDirectory). Adding:
    bin\lib\Newtonsoft.Json.Net35.dll
    Gather all files from Project items @(_binDeployableAssemblies). Adding:
    Publish Pipeline Collect Files Phase
    Found The following for Config tranformation:
    Web.config
    Creating directory "C:\SVN\TrakNet\trunk\MTS\obj\Debug\TransformWebConfig\transformed\".
    Publish Pipeline Transform Phase
    Creating directory "C:\SVN\TrakNet\trunk\MTS\obj\Debug\CSAutoParameterize\transformed\".
    Copying Web.config to obj\Debug\CSAutoParameterize\original\Web.config.
    Transforming Source File: C:\SVN\TrakNet\trunk\MTS\Web.config
      Applying Transform File: <?xml version="1.0"?>
            <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
              <connectionStrings>
                <add
                  connectionString="{% token='$(ReplacableToken_#(parameter)_#(tokennumber))' xpathlocator='name' parameter='$(name)-Web.config Connection String' description='$(name) Connection String used in web.config by the application to access the database.' defaultValue='$(connectionString)' tags='SqlConnectionString' %}"
                  xdt:Transform="SetTokenizedAttributes(connectionString)" xdt:SupressWarnings="True" />
              </connectionStrings>
            </configuration>
          Output File: obj\Debug\CSAutoParameterize\transformed\Web.config
        Transformation succeeded
    Auto ConnectionString Transformed Web.config into obj\Debug\CSAutoParameterize\transformed\Web.config.
    Creating directory "obj\Debug\Package\PackageTmp".
    Copying all files to temporary location below for package/publish:
    obj\Debug\Package\PackageTmp.
    Copying bin\LMS.dll to obj\Debug\Package\PackageTmp\bin\LMS.dll.
    Copying bin\LMS.pdb to obj\Debug\Package\PackageTmp\bin\LMS.pdb.
    Copying Global.asax to obj\Debug\Package\PackageTmp\Global.asax.
    Copying lib\Newtonsoft.Json.Net35.dll to obj\Debug\Package\PackageTmp\lib\Newtonsoft.Json.Net35.dll.
    Copying MtsSchemas\MtsSchema.xml to obj\Debug\Package\PackageTmp\MtsSchemas\MtsSchema.xml.
    Copying C:\SVN\TrakNet\trunk\MTS\lib\Newtonsoft.Json.Net35.dll to obj\Debug\Package\PackageTmp\bin\lib\Newtonsoft.Json.Net35.dll.
    Copying obj\Debug\CSAutoParameterize\transformed\Web.config to obj\Debug\Package\PackageTmp\Web.config.
    Publish Pipeline Deploy phase Pre-Deploy CopyAllFilesToOneFolder Stage
    Generate source manifest file for Web Deploy package/publish ...
    Creating directory "obj\Debug\Database".
    Starting Web deployment task from source:manifest(C:\SVN\TrakNet\trunk\MTS\obj\Debug\Package\LMS.SourceManifest.xml) to Destination:auto().
    Updating filePath (default web site/LMS\bin\ELMS.dll).
    Updating filePath (default web site/LMS\bin\ELMS.pdb).
    Updating filePath (default web site/LMS\bin\lib\Newtonsoft.Json.Net35.dll).
    Updating filePath (default web site/LMS\lib\Newtonsoft.Json.Net35.dll).
    Updating filePath (default web site/LMS\Web.config).
    Updating setAcl (default web site/LMS).
    Updating setAcl (default web site/LMS).
    Successfully executed Web deployment task.
    Publish is successfully deployed.
    ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
    ========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
    

    Like I said: No idea what changed. I had been manually moving the DLLs into the website's virtual directory, then just for kicks I tried publishing this morning, and everything worked out fine.

    • mthierba
      mthierba almost 13 years
      Could you set the "MSBuild project build log file verbosity" to Detailed or Diagnostic (in VS/Tools/Options/Projects and Solutions/Build and Run) and post a more detailed log output, please?
    • Damith
      Damith almost 13 years
      are you using any SVN plugin like ankhsvn?
    • Christopher
      Christopher about 6 years
      I'd recommend putting something about your "Object reference not set to an instance of an object" error in the title of this thread. Otherwise could be assumed to be (though I don't think it is) a duplicate of: stackoverflow.com/a/48104124/826308
  • p.wilt
    p.wilt over 12 years
    That could definitely have been the issue. I will check back through the source control logs and try to determine if this is the case. Edit: On review of the project file, I don't see any duplicated file names.
  • Jonathan
    Jonathan about 10 years
    I had a similar issue and nothing helped....except I was able to successfully deploy from another PC.
  • Al Lelopath
    Al Lelopath almost 10 years
    Could probably also right-click, select Add -> Existing Item
  • Jon Crowell
    Jon Crowell about 9 years
    This solved my problem. I reverted to the first commit I could find that would publish, then diffed against the next commit. The only file I had to change was my csproj. Once it was cleaned up, publish to azure worked like a charm.
  • Maurice Klimek
    Maurice Klimek almost 7 years
    In my case it was a bin folder included to the solution.
  • Lanklaas
    Lanklaas almost 7 years
    Thanks, I excluded the bin folder from the project and the publish succeeded.
  • Deshani Tharaka
    Deshani Tharaka over 6 years
    I included yellow marked files (missing files to the .csproj) to the project and the publish succeeded.
  • Mohamed Farrag
    Mohamed Farrag over 6 years
    That is exactly what I had , after removing this file it worked successfully