所以我觉得我已经到了绳子的尽头,但希望有人比我在这里做得更多。我有一些Typescript
个文件,但这几乎无关紧要,因为我对所有内容文件都有这个问题。
我能够在我的nuget
中dotnet pack
生成一个.csproj
或更精确的parent
nuget包,其中包含我在包中的内容文件项目:
<ItemGroup>
<Content Include="Scripts\Utility.ts">
<Pack>true</Pack>
<PackagePath>contentFiles\Scripts\;content\Scripts</PackagePath>
</Content>
</ItemGroup>
我可以浏览生成的.nupkg
,看看文件是否已添加到content\Scripts
和contentFiles\Scripts
位置的文件包中
问题在于,当我在'child'progect中使用此包时,Typescript
永远不会被复制到child
项目的任何文件夹中,尽管我可以看到它在{.nuget\packages\parent\...
中提取1}}文件夹。
起初我认为这是parent
项目中我的初始设置,可能是,但在尝试了书中的所有内容后,无法将内容文件复制到{{ 1}}项目。然后,我尝试在我的包的child
文件夹中尝试使用Init.ps1
的黑暗路径,尽管无法调试,但它似乎也运行得很糟糕(我完全没有阻止并重新安装了包它仍然无法在大部分时间运行。)这可能是方式,但我不知道为什么我不能让它输出到tools
...也许仍有希望与{{1但我似乎无法弄明白。最后,我看到了nuget .targets
file的一些潜力,但我似乎也掌握了如何将它用于我的目的!我希望得到一些关于如何完成这项工作的反馈。
答案 0 :(得分:3)
来自: Announcing NuGet 3.1 with Support for Universal Windows Platform
对于使用Nuget v3.1中的project.json文件的项目,折旧Nuget包中的内容已被折旧。从那时起,project.json文件已被删除,转而支持新的.csproj格式。如果您正在使用packages.config文件,那么从Nuget包导入内容仍应有效。
还提到的是,还有其他包管理器可用于提供内容。
在我看来,新世界的答案就是创建一个包含utility.js的节点模块,让npm将它传递给你的项目。
可能的解决方法:
我已经查看了.targets来复制文件并使其工作,但它确实在每个构建上运行 - 这对您来说可能是也可能不是问题。我无法用它做我想做的事。
在[PackageId] .targets:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Either do this for all scripts in the Scripts/js folder -->
<Target Name="CopyScriptsToProject" BeforeTargets="Build">
<Message Text="Copying scripts to project" />
<ItemGroup>
<SourceScripts Include="$(MSBuildThisFileDirectory)..\..\content\Scripts\js\**\*.*"/>
</ItemGroup>
<Copy SourceFiles="@(SourceScripts)" DestinationFiles="@(SourceScripts -> '$(MSBuildProjectDirectory)\wwwroot\js\%(RecursiveDir)%(Filename)%(Extension)')" Condition="!Exists('$(MSBuildProjectDirectory)\wwwroot\js\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!-- Or do this for the individual script -->
<Target Name="CopyUtilityScriptToProject" BeforeTargets="Build">
<Copy SourceFiles="$(MSBuildThisFileDirectory)..\..\content\Scripts\js\Utility.js" DestinationFiles="$(MSBuildProjectDirectory)\wwwroot\js\Utility.js" Condition="!Exists('$(MSBuildProjectDirectory)\wwwroot\js\Utility.js')" />
</Target>
</Project>
<!-- Note: condition can be removed from either if you want it to overwrite each build -->
并在.csproj文件中(将[PackageId]替换为您的包名称):
<Project Sdk="Microsoft.NET.Sdk">
... any Globals for source control stuff ...
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<Version>7.0.0</Version>
<PackageId>[PackageId]</PackageId>
</PropertyGroup>
... any PackageReference stuff ...
<ItemGroup Label="Packaging">
<Content Include="build\netcoreapp2.0\[PackageId].targets" PackagePath="build\netcoreapp2.0\[PackageId].targets" />
<!-- Either -->
<Content Include="Scripts\js\**\*.*" PackagePath="content\Scripts\js;contentFiles\Scripts\js" />
<!-- or -->
<Content Include="Scripts\js\Utility.js" PackagePath="content\Scripts\js;contentFiles\Scripts\js" />
</ItemGroup>
</Project>
似乎有一个错误,当{。1}}没有在.csproj中明确设置时,构建目标不起作用。虽然这可能是我的开发环境的一个问题。
答案 1 :(得分:1)
显然,您需要路径any\any
中的<PackageCopyToOutput>true</PackageCopyToOutput>
以及<ItemGroup>
<Content Include="Scripts\js\Utility.js">
<Pack>true</Pack>
<PackagePath>contentFiles\any\any\wwwroot\js\;content\any\any\wwwroot\js\</PackagePath>
<PackageCopyToOutput>true</PackageCopyToOutput>
</Content>
</ItemGroup>
,包括TypeScript
,如下所示:
.js
在将.targets
文件包含在包中之前,您还需要预编译 // Get source cell type and style
CellType type_from = cell_from.getCellTypeEnum();
CellStyle style_from = cell_from.getCellStyle();
// Get source cell data format
short df = style_from.getDataFormat();
// Change dest cell cell type, set format on it
cell_to.setCellType(type_from);
CellStyle style_to = cell_to.getCellStyle();
style_to.setDataFormat(df);
cell_to.setCellStyle(style_to);
然而,这仍然没有在那里创建一个文件,只是一些奇怪的引用。
最后,我们使用Vue.component('cropper-admin', require('./js/component.vue'));
文件,你可以在这里找到一个工作回购:learn more
答案 2 :(得分:1)
Serj Sagan's answer使我步入正轨,但仅将内容文件部署到bin
目录(如他所指出的)还不够。我可以通过更改使用项目的.csproj文件中的程序包引用选项来获取要部署的文件,如下所示:
<PackageReference Include="MyNuGetPackage" Version="0.0.0.1">
<IncludeAssets>all</IncludeAssets>
<PrivateAssets>analyzers;build</PrivateAssets>
</PackageReference>
PrivateAssets
的默认值似乎是contentfiles;analyzers;build
(documentation),在这种情况下,这不是我们想要的。