C# 如何链接到不同位置的文件夹?

C# 如何链接到不同位置的文件夹?,c#,msbuild,csproj,project-files,C#,Msbuild,Csproj,Project Files,在Visual Studio或SharpDevelop编写的C#项目文件中,不在项目文件夹层次结构中的文件可以包含在元素中。1 我的目录结构如下所示: [SolutionDirectory] |- [MyProject] | |- TestProj.csproj |- [File] | |- somefile.txt |- TestProj.sln 因此,在TestProj.csproj中,我可以添加以下内容: <ItemGroup> <Embedd

在Visual Studio或SharpDevelop编写的C#项目文件中,不在项目文件夹层次结构中的文件可以包含在
元素中。1

我的目录结构如下所示:

[SolutionDirectory]
 |- [MyProject]
 |   |- TestProj.csproj
 |- [File]
 |   |- somefile.txt
 |- TestProj.sln
因此,在TestProj.csproj中,我可以添加以下内容:

<ItemGroup>
    <EmbeddedResource Include="..\File\somefile.txt">
        <LogicalName>MyResource</LogicalName>
        <Link>somefile.txt</Link>
    </EmbeddedResource>
</ItemGroup>
在这里可以看到,这个额外的文件夹将保持为空,并且。(同样的限制可能适用于某些存档格式。)

因此,我仍在试图找到一个更好的解决方案:如何链接到项目文件夹结构之外的文件,并将它们排序到项目中的空文件夹层次结构中?

不幸的是,文档中甚至没有提到
元素,因此我无法通过文档找到有关该问题的任何信息


1:一般来说,这用于在多个项目中包含文件。在我的特殊情况下,我正在处理一个项目,该项目需要引用同一解决方案中的类库,但它还需要将该类库的整个源代码(包括项目文件等)作为嵌入式资源包含在内。

是否需要将所有源代码文件作为单个嵌入式资源,或者1个zip就足够了?@Balah:我考虑过将压缩后的源代码作为单个资源嵌入,但我不确定是否可以将项目文件配置为将zip文件嵌入为动态压缩的资源。我可能必须处理预构建事件并调用外部zip应用程序,尽管这会引入一种依赖关系,使这样的zip应用程序再次出现在路径上。。。可能,虽然不是最优的。啊,我想你必须有预构建事件,它们可以在飞行中压缩。。。虽然。。。如果您使用的是.NET4.5及更高版本(使用ZipFile类),则不必使用外部zip应用程序。我有一个类似的问题,不久前我使用MsBuild内联任务和调整构建顺序解决了这个问题。一旦我找到密码,我会发布一个答案somewhere@Balah当前位置我正在考虑是否为此创建一个单独的问题,以便您可以在此处添加您的答案。在我目前的情况下,你的解决方案可能会对我有所帮助,但这与我在这里提出的要求大不相同(对于未来的访问者来说,找到一个问他们想要什么的问题——链接到其他位置的文件夹——并发现OP接受了一个解决了他们潜在问题的答案,但没有明确提出问题的答案是不好的。)我和你一样。你试过使用吗。我自己也尝试过,但很明显“…共享项目中的代码和资产被视为链接到主项目中的文件…”
<ItemGroup>
    <EmbeddedResource Include="..\File\somefile.txt">
        <LogicalName>MyResource</LogicalName>
        <Link>File\somefile.txt</Link>
    </EmbeddedResource>
</ItemGroup>
<ItemGroup>
    <EmbeddedResource Include="..\File\somefile.txt">
        <LogicalName>MyResource</LogicalName>
        <Link>File\somefile.txt</Link>
    </EmbeddedResource>
    <Folder Include="File" />
</ItemGroup>
<ItemGroup>
    <EmbeddedResource Include="..\File\somefile.txt">
        <LogicalName>MyResource</LogicalName>
        <Link>File\somefile.txt</Link>
    </EmbeddedResource>
    <Folder Include="..\File">
        <Link>File</Link>
    </Folder>
</ItemGroup>
[SolutionDirectory]
 |- [MyProject]
 |   |- [File]
 |   |- TestProj.csproj
 |- [File]
 |   |- somefile.txt
 |- TestProj.sln