问题
I am using NUGET Pack in teamcity to build a package. But it is creating the following error. I am using nuget teamcity version 2.2.1.
Step 2/2: Build Package (NuGet Pack) (14s)
[12:10:40][Step 2/2] Cleaning Z:\hgbuilds\IT\Build\packages
[12:10:40][Step 2/2] pack: Create NuGet package from UI\UI.Tour\UI.Tour.Web\UI.Tour.Web.csproj (14s)
[12:10:40][pack] NuGet command: C:\BuildAgent\tools\NuGet.CommandLine.2.2.1.nupkg\tools\NuGet.exe pack Z:\hgbuilds\IT\UI\UI.Tour\UI.Tour.Web\Calrom.UI.InclusiveTour.Web.csproj -OutputDirectory Z:\hgbuilds\IT\Build\packages -BasePath Z:\hgbuilds\IT -Verbose -Version 1.0.0.7 -Symbols -Properties Configuration=Deploy-Test
[12:10:40][pack] Starting: C:\BuildAgent\temp\agentTmp\custom_script2086270793558421822.cmd
[12:10:40][pack] in directory: Z:\hgbuilds\IT
[12:10:45][pack] WARNING: Option 'Verbose' has been deprecated. Use 'Verbosity' instead.
[12:10:45][pack] Attempting to build package from 'UI.Tour.Web.csproj'.
[12:10:45][pack] Packing files from 'Z:\hgbuilds\IT\UI\UI.Tour\UI.Tour.Web\bin'.
[12:10:46][pack] WARNING: Description was not specified. Using 'Description'.
[12:10:48][pack] content
[12:10:54][pack] Cannot add part for the specified URI because it is already in the package.
[12:10:54][pack] Process exited with code 1
[12:10:54][Step 2/2] Step Build Package (NuGet Pack) failed
Please guide what I am missing here.
回答1:
I had the same error but there were no issues in the csproj file. I was using typescript and was accidentally checking in the .js files. So at run-time another js file was being generated, thus there were two of each js files being added.
I found it by going through the team city build log and looking for duplicates. As they were "do not copy" there was no issue with a simple msbuild but as we just switched to using Octopack, cannot add multiple when nugeting a solution.....
You can find the culprit (typescript or otherwise) as it will be the first to appear after the "attempting to create line" (there could be many but finding them on at a time could be easier than doing it manually)
回答2:
Edit the project file and make sure you do not have duplicate Reference Incudes or duplicate Content Includes. My issue was I had...
<Reference Include="SCS.PickList, Version=1.7.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Bin\SCS.PickList.dll</HintPath>
</Reference>
AND
<Content Include="Bin\SCS.PickList.dll" />
Once I removed the Content include it worked.
回答3:
One possible problem could be that Octopack is actually case sensitive. In my case VS Project had reference to the file with name in lower case letters such as this
回答4:
In my .nuspec file I had the lines equivalent to:
<file src="Source\MyCompany.ProjectA\**\*.cs" target="src" />
<file src="Source\MyCompany.ProjectB\**\*.cs" target="src" />
I got the error due to the AssemblyInfo.cs file being in both projects.
(This was to enable the creation of a NuGet Symbol Package.)
回答5:
For me, it was because my files didn't have extensions.
<file src=".\LICENSE" target="" />
<file src=".\NOTICE" target="" />
My solution was to add a wildcard to the end of the file:
<file src=".\LICENSE*" target="" />
<file src=".\NOTICE*" target="" />
回答6:
In your nuspec file do you have a file node specified?
<files>
<file src="the_dll_for_your_csproj"/>
</files>
If so, is it possible that you have included (either explicitly or by wildcard) the dll for the csproj you are trying to build?
来源:https://stackoverflow.com/questions/15809704/cannot-add-part-for-the-specified-uri-because-it-is-already-in-the-package