Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# nuget.exe无法识别nuspec文件中的任何目标框架_C#_Nuget_Nuget Spec - Fatal编程技术网

C# nuget.exe无法识别nuspec文件中的任何目标框架

C# nuget.exe无法识别nuspec文件中的任何目标框架,c#,nuget,nuget-spec,C#,Nuget,Nuget Spec,我有一个项目,通过在CSPROJ文件中设置以下选项,直接在visual studio中生成NuGet包: 真的 这将导致生成的包包含所有已标记为“复制到输出目录=不复制”的嵌入资源文件 不幸的是,VisualStudio的自动打包程序总是选择将这些文件复制到NuGet包中,不管怎样 为了解决这个问题,我一直在研究编辑.NUSPEC文件,并从命令行使用NUGET.EXE创建包 然后我遇到了一个新问题。通过使用NUGET.EXE而不是visual studio,生成的包将显示不支持的依赖项部分,我在

我有一个项目,通过在CSPROJ文件中设置以下选项,直接在visual studio中生成NuGet包:

真的

这将导致生成的包包含所有已标记为“复制到输出目录=不复制”的嵌入资源文件

不幸的是,VisualStudio的自动打包程序总是选择将这些文件复制到NuGet包中,不管怎样

为了解决这个问题,我一直在研究编辑.NUSPEC文件,并从命令行使用NUGET.EXE创建包

然后我遇到了一个新问题。通过使用NUGET.EXE而不是visual studio,生成的包将显示不支持的依赖项部分,我在“NUGET Explorer”中打开包时看到了这一点:

以下是用于创建包的.bat文件:

c:\nuget\nuget.exe config -Set repositoryPath="%USERPROFILE%\.nuget\packages"
c:\nuget\nuget.exe pack -IncludeReferencedProjects -properties Configuration=Release
这是NUSPEC文件:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>Integrative.Lara</id>
    <version>0.5.3</version>
    <authors>Pablo Carbonell, Integrative Software LLC</authors>
    <owners>Pablo Carbonell, Integrative Software LLC</owners>
    <requireLicenseAcceptance>true</requireLicenseAcceptance>
    <license type="file">LICENSE</license>
    <projectUrl>https://github.com/integrativesoft/lara</projectUrl>
    <iconUrl>https://integrative.b-cdn.net/Integrative.ico</iconUrl>
    <description>Lara is ...</description>
    <copyright>Copyright (c) 2019 Integrative Software LLC</copyright>
    <tags>lara, web, html, html5, desktop, gui, cross, framework, mac, osx, platform, ui, blazor, razor</tags>
    <repository url="https://github.com/integrativesoft/lara" />
    <dependencies>
      <group targetFramework=".NETStandard2.0">
        <dependency id="Microsoft.AspNetCore" version="2.2.0" exclude="Build,Analyzers" />
        <dependency id="Microsoft.AspNetCore.WebSockets" version="2.2.1" exclude="Build,Analyzers" />
      </group>
    </dependencies>
  </metadata>
</package>
有没有办法修复不受支持的目标?我还尝试使用netstandard2.0和其他标识符,但仍然得到相同的不受支持的标识符


或者,有没有一种方法可以使用Visual Studio的自动包生成并防止它在包中包含文件?

正如您所看到的,当您使用nuspec时,您负责将每一件小事都做好。使用NuGet的MSBuild包目标更容易,因为它可以自动创建依赖项,包括在组中使用正确的TFM

上的NuGet文档包含与使用msbuild打包相关的内容,这是使用dotnet pack或GeneratePackageOnBuild时发生的情况。特别是关于的部分有以下示例:

错误的 因为您的文件是嵌入的,所以您的csproj将包含以下内容。因此,使用文档中的信息,您可以这样做,或者像文档一样使用多行版本。MSBuild允许您以任意方式设置项元数据

真的


关于GeneratePackageOnBuild的一个注意事项:让build为您创建包很方便,但这意味着当您在调试并且需要在再次测试之前更改一行代码时,您不仅要等待生成,还要等待包。如果你的包很小,它可能相当快,但它仍然会减慢你的内部循环体验。大多数开发人员只需要打包的频率远远低于他们构建的频率,因此我建议禁用GeneratePackageOnBuild,并在实际需要nupkg时在项目或解决方案上运行dotnet pack。

不确定这是否是您预期框架的唯一问题,但您是否尝试重新安装2.2框架?仍然看到不支持的版本,Version=v0.0这本应该有效,但没有,反正投票了。我怀疑是这个问题:,而解决方法表明它也不起作用。我最终解决了这个问题,将所有的TypeScript文件拆分到它们自己的NodeJS项目中。