2014-09-11 171 views
0

我創建了一個NuGet package,它是已存在但已經死亡package的分叉。NuGet軟件包在安裝時返回`路徑中的非法字符.`安裝

我刪除了兩個我們不再使用的文件夾。由於他們太長的260個字符的窗口限制。

當我嘗試通過在VS2012失敗的GUI來安裝新的軟件包,並返回

Illegal characters in path.

當我嘗試包管理器控制檯,我得到以下錯誤:

PM> Install-Package NC.Frontend.Env 
Installing 'NC.Frontend.Env 1.0.1'. 
Install failed. Rolling back... 
Install-Package : Illegal characters in path. 
At line:1 char:1 
+ Install-Package NC.Frontend.Env 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Install-Package], ArgumentException 
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand 

我也嘗試nuget install NC.Frontend.Env -Verbosity detailed但沒有更多的是暴露:

GET http://nuget.episerver.com/feed/packages.svc/FindPackagesById()?$filter=IsLatestVersion&$orderby=Version desc&$top=1&id='NC.Frontend.Env' 
GET http://nuget.episerver.com/feed/packages.svc/FindPackagesById()?id='NC.Frontend.Env' 
GET https://www.nuget.org/api/v2/FindPackagesById()?$filter=IsLatestVersion&$orderby=Version desc&$top=1&id='NC.Frontend.Env' 
GET https://www.nuget.org/api/v2/Packages(Id='NC.Frontend.Env',Version='1.0.1') 
nuget : System.ArgumentException: Illegal characters in path. 
At line:1 char:2 
+ nuget install NC.Frontend.Env -Verbosity detailed 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (System.Argument...acters in path.:String) [], RemoteException 
    + FullyQualifiedErrorId : NativeCommandError 

    at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) 
    at System.IO.Path.GetDirectoryName(String path) 
    at NuGet.ZipPackage.IsPackageFile(PackagePart part) 
    at NuGet 
.OptimizedZipPackage.<EnsurePackageFiles>b__9(PackagePart part) 
    at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() 
    at NuGet.OptimizedZipPackage.EnsurePackageFiles() 
    at NuGet.OptimizedZipPackage.GetAssemblyReferencesCore() 
    at NuGet.LocalPackage.get_AssemblyReferences() 
    at NuGet.DataServicePackage.get_AssemblyReferences() 
    at NuGet.PackageExtensions.HasProjectContent(IPackage package) 
    at NuGet.PackageWalker.GetPackageTarget(IPackage package) 
    at NuGet.PackageWalker.GetPackageInfo(IPackage package) 
    at NuGet.PackageWalker.ProcessPackageTarget(IPackage package) 
    at NuGet.PackageWalker.Walk(IPackage package) 
    at NuGet.InstallWalker.ResolveOperations(IPackage package) 
    at NuGet.PackageManager.Execute(IPackage package, IPackageOperationResolver resolver) 
    at NuGet.PackageManager.InstallPackage(IPackage package, FrameworkName targetFramework, Boolean ignoreDependencies, Boolean allowPrereleaseVersions, Boolean ignoreWalkInfo) 
    at NuGet.PackageManager.InstallPackage(IPackage package, Boolean ignoreDependencies, Boolean allowPrereleaseVersions) 
    at NuGet.PackageManager.InstallPackage(String packageId, SemanticVersion version, Boolean ignoreDependencies, Boolean allowPrereleaseVersions) 
    at NuGet.Commands.InstallCommand.InstallPackage(IFileSystem fileSystem, String packageId, SemanticVersion version) 
    at NuGet.Commands.InstallCommand.ExecuteCommand() 
    at NuGet.Commands.Command.Execute() 
    at NuGet.Program.Main(String[] args) 

我不知道wh這發生了,而且我看起來很奇怪,因爲我只是刪除了東西。

+0

好吧,告訴我們什麼文件存儲在.zip壓縮文件中。這就是它抱怨的。 – 2014-09-11 15:01:25

回答

0

我發現這是因爲我使用的工具。

我正在使用GUI工具,但是當我使用命令行工具時,所有工作都完美無缺。

0

你的包裏仍然有很長的路徑。我設法安裝你的包只有在我的項目文件夾位於根:

successful install

否則我得到一個長路徑錯誤:

long path error

也許你應該考慮使用經典的安裝或用於工具的vsix和僅用於直接項目依賴關係的nuget?或者也許將工具分成幾部分?目前已經有節點和NPM包:

https://www.nuget.org/packages/Node.js/

https://www.nuget.org/packages/Npm/

+0

我解決了我的問題,但我無法自己關閉它。我正在使用GUI工具,使用cmd工具修復了我的問題。長路徑的問題應該得到解決,否則我試圖通過展開node_modules文件夾來修復它。 – 2014-09-11 14:51:33

+0

@AllanKimmerJensen你可以用你的修補程序編寫自己的答案來解決問題,也許它可以幫助別人:) – Matthieu 2014-09-11 15:11:31