Build succeeds, but publish fails
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
Related videos on Youtube
p.wilt
Updated on December 29, 2021Comments
-
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 almost 13 yearsCould you set the "MSBuild project build log file verbosity" to
Detailed
orDiagnostic
(in VS/Tools/Options/Projects and Solutions/Build and Run) and post a more detailed log output, please? -
Damith almost 13 yearsare you using any SVN plugin like ankhsvn?
-
Christopher about 6 yearsI'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 over 12 yearsThat 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 about 10 yearsI had a similar issue and nothing helped....except I was able to successfully deploy from another PC.
-
Al Lelopath almost 10 yearsCould probably also right-click, select Add -> Existing Item
-
Jon Crowell about 9 yearsThis 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 almost 7 yearsIn my case it was a bin folder included to the solution.
-
Lanklaas almost 7 yearsThanks, I excluded the bin folder from the project and the publish succeeded.
-
Deshani Tharaka over 6 yearsI included yellow marked files (missing files to the .csproj) to the project and the publish succeeded.
-
Mohamed Farrag over 6 yearsThat is exactly what I had , after removing this file it worked successfully