Visual Studio 2015中的.NETCore类库如何将文件夹复制到bin/Debug/net452目录?

6
我有一个在 Visual Studio 2015 中创建的 .NET Core 类库项目 ClassLibrary1。在这个类库项目中,我添加了一个名为 NewFolder 的文件夹,它将被引用 ClassLibrary1 的任何项目使用。
例如,我有一个名为 ConsoleApplication1 的项目,它引用 ClassLibrary1。每次我构建 ConsoleApplication1 时,NewFolder 应被复制。
从 PROJECT_PATH\ClassLibrary1\bin\Debug\net452\win7-x64\NewFolder 到 PROJECT_PATH\ConsoleApplication1\bin\Debug\net452\win7-x64\NewFolder。
更新:我在 ClassLibrary1 项目的 project.json 文件中添加了以下内容。
"buildOptions: {
    "copyToOuput": "NewFolder"
}"

每次我构建ConsoleApplication1时,它只会将文件夹复制到PROJECT_PATH\ClassLibrary1\bin\Debug\net452\win7-x64\NewFolder而不是PROJECT_PATH\ConsoleApplication1\bin\Debug\net452\win7-x64\NewFolder。对于非.NET Core项目,这似乎不是这种行为方式,我不知道应该如何在.NET Core项目中完成此操作。
更新2: 对于非.NET Core项目,我只需将脚本添加到ClassLibrary1的后生成事件命令行中,它就会自动将ClassLibrary1/bin/Debug中的所有文件和文件夹(包括文件夹)复制到ConsoleApplication1/bin/Debug中。 xcopy "$(ProjectDir)NewFolder" "$(TargetDir)NewFolder" /E /Y

更新了我的答案,这个可行,我已经检查过了... - gilmishal
1个回答

1
我通常在非 .NET Core 中创建一个指向项目文件夹/项的链接(在您的情况下是 ConsoleApplication1),然后将其设置为复制到输出。但这在 .NET Core 中无法实现。
你所做的也是错误的,ClassLibrary1 的 project.json 不会将文件复制到 ConsoleApplication1 的输出目录中。你应该在 ConsoleApplication1 的 project.json 中添加以下内容。
"copyToOutput": {

  "mappings": {
    "NewFolder/": {
      "include": "../ClassLibrary1/bin/Debug/net452/win7-x64/NewFolder/**"
    }
  }

}

mappings - 定义要复制到 (NewFolder) 的文件夹(/ 显然是必需的)。

include - 定义 glob 模式和文件路径,以包括在构建输出中进行复制。

更新

您可以使用 buildOptions 嵌入您的文件,并使用

var assembly = Assembly.GetExecutingAssembly();
var resourceName = "MyCompany.MyProduct.MyFile.txt";

using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader reader = new StreamReader(stream))
{
    string result = reader.ReadToEnd();
}

这个可以工作!但是,它要求我将配置放在ConsoleApplication1中。实际上,我正在寻找一种解决方案,其中配置仅在ClassLibrary1中编写,就像非.NET Core项目中的行为一样。请参见UPDATE 2。虽然我不确定是否可能。 - jmc
查看此 https://github.com/dotnet/cli/issues/2902 问题,copyToOutput 存在一个 bug,不会很快修复。最后一条评论建议将文件嵌入到 dll 中,并相应地访问它。 - gilmishal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接