我有解决方案A,它有一个.NET Core 1.1类库项目。在Package属性中,我填充了所有NuGet字段,并在成功构建时选择创建NuGet。这个项目构建得很好,并且创建了NUPKG。 BTW如何自动将生成的NUPKG复制到本地目录(我自己的存储库)?
然后我有解决方案B,这是一个ASP.NET Core 1.1 Web应用程序。在其中我浏览到我的本地存储库(我手动复制了解决方案A构建的NUPKG)并将我的SolutionA.MyPackage安装到Web应用程序中。 VS.2017表示它成功安装它。我看到它列在项目的NuGet依赖项中。
但是,当我尝试使用该NuGet包中定义的任何对象时,我得到一个红色突出显示,表示没有找到它,好像没有NuGet或该程序集引用该DLL但是有!
是什么原因导致安装此Visual Studio生成的Nuget包,但其行为就像它甚至没有被引用一样?
更新 - CSPROJ TARGET 至于复制到我的本地存储库,我把它添加到CSPROJ但它没有工作(有人建议它,因为我说它)。我终于弄明白为什么它不起作用, ItemGroup必须在任务内。
<Target Name="CopyPackage" AfterTargets="GenerateNuspec">
<ItemGroup>
<MyPackageFiles Include="bin\Release\PackageId.*.nupkg" />
</ItemGroup>
<Copy SourceFiles="@(MyPackageFiles)" DestinationFolder="D:\My Repository\MyNugget\Publish" />
</Target>
更新NuGet检查 我用NuGet Package Explorer打开了NUPKG,它或多或少地显示了这个:
content\
Properties\
launchSettings.json
Views\
Shared\
rest of my stuff here
contentFiles\
any\
netcoreapp1.1\
Properties\
launchSettings.json
Views\
Shared\
rest of my stuff here
lib\
netcoreapp1.1 (.NEtCoreApp, Version=v1.1)
MyPackage.dll
更新3 由于NuGet似乎已经停止工作(以前工作得很好),我选择使用Assembly Reference而不是NuGet(现在)。在这种情况下,发生了一些奇怪的事情,编码时我可以引用引用程序集中的所有对象(以前的NuGet),因此在主项目上没有编译错误但是当我运行Web应用程序时我得到一个内部错误,因为它说
FileNotFoundException: Could not load file or assembly
'MyPackage, Version=0.0.3.0, Culture=neutral, PublicKeyToken=null'.
The system cannot find the file specified.
Unknown location
这很奇怪,因为在解决方案资源管理器中我看到了程序集引用,当我单击它(主应用程序)时,我可以导航到我在该程序集中定义的所有对象。为什么它再也找不到了?
答案 0 :(得分:1)
它再次起作用(就像之前一样!)。今天我可以打开解决方案但是当我尝试下载扩展程序(工具|扩展程序)时,我收到了一条关于拒绝访问或类似内容的错误消息。它发生在我安装到VS.2017之前。
在2002年以来我使用的所有Visual Studios中,这是最不稳定的! (我有更新15.2)。
当我看到这个错误再次发生时,我知道如何摆脱它并想,“嘿,也许这就是保持NuGet包安装但未找到或直接装配参考的问题”。< / p>
所以我去了 C:\ Users \ AppData \ USER \ Local \ Microsoft \ VisualStudio \ 15.2 *文件夹,完全删除了。
之后我的ACCESS DENIED问题因副作用而消失,我不得不再次重新安装所有扩展。我再次尝试安装我自己的NuGet,它成功完成并按预期(在长时间故障期间没有发生)找到了对象并且Web应用程序再次工作。