创建包含共享项目属性的 nuget - 自动引用
Create nuget containing shared project properties - automatic references
我们想创建一个包含 msbuild 属性 (.props) 文件的 nuget。我们通过创建一个 nuspec 来做到这一点,它作为以下 MIL(最重要的行):
<files>
<file src="SharedProperties.props" target="build\SharedProperties.props" />
</files>
我们如何更改我们的 .nuspec 定义,以便引用此 nuget 的项目 (.csproj) 将自动包含 属性 文件(“类似”此代码段中的第 3 行):
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Shared\SharedProperties.props" />
(这可能吗?)
这是 nuget 包设计的一个特点。并且 nuget 具有自动导入目标机制。参见 this document。
提示是您应该将目标或道具文件命名为.props 或目标,然后将文件打包到构建文件夹中。仅此而已。
举个例子,我创建了一个lib工程,然后用这个nuspec文件打包:
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>test_A</id>
<version>1.0.0</version>
<title>me</title>
<authors>me</authors>
......
</metadata>
<files>
<file src="test_A.props" target="build" />
</files>
</package>
如果我的包名为 test_A.1.0.0.nupkg
,文件应命名为 test_A.props
文件。
Then,当你在新项目中安装nuget包时,可以查看<new project>.csproj
文件,props文件是在nuget安装过程中自动添加的。
如果使用PackageReference nuget管理格式安装nuget包,文件添加到obj\xxx.csproj.nuget.g.props
或obj\xxx.csproj.nuget.g.targets
文件下:
对于 new-sdk 项目,这也有效。如果你创建一个新的 sdk class 库项目,你可以使用它到 csproj 文件中来打包它:
<None Include="<packages_id>.props" Pack="true" PackagePath="build">
完成后,将新包安装到new-sdk主工程中,会发现props文件已经自动导入到obj\xxx.csproj.nuget.g.props
文件下了。
根据 documentation,“.props”文件应作为导入自动添加到 .csproj 的开头(.targets 文件应添加到末尾)。但是,对于新的 sdk 样式项目,这似乎不起作用?
我们想创建一个包含 msbuild 属性 (.props) 文件的 nuget。我们通过创建一个 nuspec 来做到这一点,它作为以下 MIL(最重要的行):
<files>
<file src="SharedProperties.props" target="build\SharedProperties.props" />
</files>
我们如何更改我们的 .nuspec 定义,以便引用此 nuget 的项目 (.csproj) 将自动包含 属性 文件(“类似”此代码段中的第 3 行):
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Shared\SharedProperties.props" />
(这可能吗?)
这是 nuget 包设计的一个特点。并且 nuget 具有自动导入目标机制。参见 this document。
提示是您应该将目标或道具文件命名为
举个例子,我创建了一个lib工程,然后用这个nuspec文件打包:
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>test_A</id>
<version>1.0.0</version>
<title>me</title>
<authors>me</authors>
......
</metadata>
<files>
<file src="test_A.props" target="build" />
</files>
</package>
如果我的包名为 test_A.1.0.0.nupkg
,文件应命名为 test_A.props
文件。
Then,当你在新项目中安装nuget包时,可以查看<new project>.csproj
文件,props文件是在nuget安装过程中自动添加的。
如果使用PackageReference nuget管理格式安装nuget包,文件添加到obj\xxx.csproj.nuget.g.props
或obj\xxx.csproj.nuget.g.targets
文件下:
对于 new-sdk 项目,这也有效。如果你创建一个新的 sdk class 库项目,你可以使用它到 csproj 文件中来打包它:
<None Include="<packages_id>.props" Pack="true" PackagePath="build">
完成后,将新包安装到new-sdk主工程中,会发现props文件已经自动导入到obj\xxx.csproj.nuget.g.props
文件下了。
根据 documentation,“.props”文件应作为导入自动添加到 .csproj 的开头(.targets 文件应添加到末尾)。但是,对于新的 sdk 样式项目,这似乎不起作用?