在一个解决方案(.NET Core)中有两个类库。其中一个( const entity = {/* Put your entity definition here */};
agent.client.addJson_({sessionEntityTypes: [entity]});
)是一个主库,它依赖于另一个库(windowSoftInputMode = "stateHidden | adjustResize"
)。我在项目文件夹(cl1
文件的相同位置)中为cl2
项目添加了一个仅包含所需元数据(没有依赖项,没有文件)的.nuspec
文件,并且我将{ {1}}是cl1
的财产。
每当我构建类库(.csproj
)时,GeneratePackageOnBuild
都会自动在debug / release文件夹中创建。
当我检查生成的true
文件时,我看到两个奇怪的事情:
cl1
文件与我在项目文件夹中添加的文件不同.nupkg
文件中提到了.nupkg
作为依赖项,但{{1}的.nuspec
文件夹中没有包含cl2
的DLL。 }。因此,每当我在另一种解决方案中使用此软件包时,都会收到.nuspec
的错误cl2
。我已经在互联网上冲浪,但无法找到解决上述错误的合适方法。
答案 0 :(得分:0)
我已经在项目文件夹(.csproj文件的相同位置)中添加了一个.nuspec文件[...]
您必须使用.csproj
标签在NuspecFile
中指定您自己的NuSpec文件的路径,否则它将被忽略,并且将使用来自{{1} }文件,请参见reference。您需要使用文件的相对路径或绝对路径,例如:
.csproj
- 生成的.nuspec文件与我在项目文件夹中添加的文件不同
如上所述,您的NuSpec文件可能不包括在内。但是,即使存在,也会存在差异,因为一些信息,例如源文件位置不是必需的,目标位置在大多数情况下是由内部软件包文件结构本身指定的,因此它不存在,因为它是多余的。
在新生成的.nuspec文件中提到了
- cl2作为依赖项,但是.nupkg的lib文件夹中没有包含cl2的dll。因此,每当在其他解决方案中使用此nupkg时,cl2都会出现错误“源中不存在具有此ID的软件包”。
依赖项用于软件包。因此,当NuGet还原软件包时,它将搜索此软件包所依赖的其他软件包,这里<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NuspecFile>cl1.nuspec</NuspecFile>
</PropertyGroup>
</Project>
,但是没有,因此会出现错误。打包项目时,包装中不包含引用的项目。这是一个开放的issue,您可以尝试使用workarounds。
最可靠但最不方便的解决方案是完全避免此问题。