【问题标题】:Visual Studio 2015 .NETCore class library copy folder to bin/Debug/net452Visual Studio 2015 .NETCore 类库复制文件夹到 bin/Debug/net452
【发布时间】:2016-10-21 07:43:55
【问题描述】:

我在 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

【问题讨论】:

  • 更新了我的答案,这行得通,我检查了...

标签: c# visual-studio visual-studio-2015 .net-core


【解决方案1】:

我通常在非 .NET Core 中做的是创建指向项目中文件夹/项目的链接(您的案例 ConsoleApplication1,然后将其设置为复制到输出。

无论如何,这不能在 .net 核心中完成。

你所做的也是错误的,ClassLibrary1 的 project.json 没有将文件复制到ConsoleApplication1 的输出你应该做的是将以下内容添加到ConsoleApplication1project.json

"copyToOutput": {

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

}

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

include - 定义要包含的全局模式和文件路径,以便复制到构建输出。

更新

您可以使用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。我不确定是否有可能
  • 查看这个github.com/dotnet/cli/issues/2902 问题,copyToOutput 存在一个不会很快修复的错误。最后一条评论建议将您的文件嵌入到 dll 中,并相应地访问它
猜你喜欢
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 2015-10-18
  • 2021-07-22
  • 2020-05-12
相关资源
最近更新 更多