cs项目文件和nuspec文件的未来

时间:2016-11-22 14:14:12

标签: .net asp.net-core asp.net-core-2.0

我们已将我们的应用程序(包含20 + - 项目和5个可执行文件)移动到asp net core(1.1)和project.json(.xproj)。

我们已经全部运行但现在我们将某些项目作为包移动到我们的内部nuget feed。我们可以使用project.json来创建nuget包,但我们仍然可以使用nuspec文件来创建包,(虽然这些占位符不再自动填充)。

由于微软宣布将放弃project.json并回到旧的xml项目结构,我想知道nuspec支持会发生什么?

我一直在研究这个,但找不到任何相关信息。

有谁知道这个项目文件的未来将如何包含nuspec支持或者仍然需要nuspec文件?

找到相关资源:

1 个答案:

答案 0 :(得分:2)

我今天发现安装vs2017时会安装预览版(preview3),你也可以在这里找到它:https://github.com/dotnet/core/blob/master/release-notes/preview3-download.md

这个新的sdk包含一个dotnet migrate,它将project.json和xproj文件转换回.csproj文件。

新项目文件将如下所示:

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />

  <PropertyGroup>
    <TargetFramework>netstandard1.6</TargetFramework>
    <AssemblyName>MyProject</AssemblyName>
    <PackageTargetFallback Condition=" '$(TargetFramework)' == 'netstandard1.6' ">$(PackageTargetFallback);dnxcore50</PackageTargetFallback>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="**\*.cs" />
    <EmbeddedResource Include="**\*.resx" />
    <EmbeddedResource Include="compiler\resources\**\*" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\OtherProject.csproj" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk">
      <Version>1.0.0-alpha-20161104-2</Version>
      <PrivateAssets>All</PrivateAssets>
    </PackageReference>
    <PackageReference Include="NETStandard.Library">
      <Version>1.6.1</Version>
    </PackageReference>
    <PackageReference Include="ServiceStack.Common.Core">
      <Version>1.0.*</Version>
    </PackageReference>
    <PackageReference Include="ServiceStack.Text.Core">
      <Version>1.0.*</Version>
    </PackageReference>
    <PackageReference Include="System.Linq.Queryable">
      <Version>4.3.0</Version>
    </PackageReference>
  </ItemGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DefineConstants>$(DefineConstants);RELEASE</DefineConstants>
  </PropertyGroup>

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

它包含nuget包引用,这使得packages.config不再需要。它可能仍然需要像以前一样的nuspec文件。

我在

后面找到了什么

是否基于这些在项目文件中添加的Xml标记,并且默认的dotnet添加了msbuild prop文件。 dotnet将onbuild将这些标签内部转换回.nuspec文件和AssemblyVersionInfo文件,然后使用这些文件构建它。

它的超级hacky,但我想它的确有效。 (至少那就是它在发布NetStandard2.0之前的工作方式,但我觉得它仍然有效)