无法为指定的URI添加部分,因为它已在包中

时间:2013-04-04 11:20:13

标签: msbuild teamcity nuget nuget-package octopus-deploy

我在teamcity中使用NUGET Pack来构建一个包。但它正在创建以下错误。我正在使用nuget teamcity 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

请指导我在这里缺少的内容。

6 个答案:

答案 0 :(得分:7)

我遇到了同样的错误,但csproj文件中没有任何问题。我正在使用打字稿并且意外地检查了.js文件。因此,在运行时,正在生成另一个js文件,因此每个js文件中都添加了两个。

我通过浏览团队城市构建日志并查找重复项来找到它。因为他们是"不要复制"一个简单的msbuild没有问题但是因为我们刚刚切换到使用Octopack,在编写解决方案时无法添加多个.......

您可以找到罪魁祸首(打字稿或其他方式),因为它将是第一个出现在"尝试创建行" (可能有很多,但一次找到它们可能比手动更容易) enter image description here

答案 1 :(得分:4)

编辑项目文件,确保没有重复的参考输入或重复的内容包含。我的问题是我有......

    <Reference Include="SCS.PickList, Version=1.7.0.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>Bin\SCS.PickList.dll</HintPath>
</Reference>

<Content Include="Bin\SCS.PickList.dll" />

一旦我删除了内容包含它就可以了。

答案 2 :(得分:2)

一个可能的问题可能是Octopack实际上是区分大小写的。在我的情况下,VS Project引用了名称为小写字母的文件 such as this

答案 3 :(得分:1)

在我的.nuspec文件中,我的行等效于:

<file src="Source\MyCompany.ProjectA\**\*.cs" target="src" />
<file src="Source\MyCompany.ProjectB\**\*.cs" target="src" />

由于 AssemblyInfo.cs 文件存在于两个项目中,我收到了错误。

(这是为了能够创建NuGet符号包。)

答案 4 :(得分:1)

对我来说,这是因为我的文件没有扩展名。

<file src=".\LICENSE" target="" />
<file src=".\NOTICE" target="" />

我的解决方案是在文件的末尾添加一个通配符:

<file src=".\LICENSE*" target="" />
<file src=".\NOTICE*" target="" />

答案 5 :(得分:0)

在您的nuspec文件中,您是否指定了文件节点?

<files>
    <file src="the_dll_for_your_csproj"/>
</files>

如果是这样,您是否可能已经(明确地或通过通配符)包含了您要构建的csproj的dll?